Files
ledgrab/server/src/ledgrab/static/locales/ru.json
T
alexei.dolgolyov 6745e25b20 feat: roadmap batch (2026-06-19) — solar/linear-light/dither/nanoleaf + integrations
Eight roadmap features from the 2026-06-19 review, each a full vertical
(backend + tests + frontend + i18n en/ru/zh); ~67 new unit tests:

- automations: SolarRule sunrise/sunset trigger (new utils/solar.py, shared
  with the daylight cycle; window logic mirrors TimeOfDayRule)
- ci: best-effort arm64 multi-arch Docker manifest via QEMU + docker manifest
  (release.yml; amd64 path untouched, continue-on-error)
- game-integration: wire the orphaned LoLPoller via a LoLPollManager + a shared
  runtime_state module (poll lifecycle on enable/CRUD/startup/shutdown)
- ui: color-harmony gradient generator (complementary/analogous/triadic/...)
- effects: audio-reactive palette modulation (new audio_energy_tap; brightness/
  saturation modulation across all 12 procedural effects)
- capture: linear-light blending + spatio-temporal dithering, opt-in per
  calibration (new utils/linear_light.py, utils/dither.py)
- devices: Nanoleaf extControl v2 per-panel UDP streaming (per_panel mode)

Also bundles the pending 2026-06-18 production-review fixes and other
in-progress work already in the working tree (manual-trigger rule, etc.),
since they share files and could not be cleanly separated.

Gate: ruff + tsc clean; pytest 2654 passed / 2 skipped. The single failing
test (automation manual_trigger handler coverage) is a separate in-progress
item owned elsewhere, intentionally left as-is.
2026-06-22 23:21:24 +03:00

3196 lines
277 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"accent.color.updated": "Цвет акцента обновлён",
"accent.custom": "Свой",
"accent.reset": "Сброс",
"accent.title": "Цвет акцента",
"activity_log.category.auth": "Авторизация",
"activity_log.category.capture": "Захват",
"activity_log.category.device": "Устройство",
"activity_log.category.entity": "Сущность",
"activity_log.category.system": "Система",
"activity_log.col.actor": "Субъект",
"activity_log.col.category": "Категория",
"activity_log.col.message": "Сообщение",
"activity_log.col.severity": "Уровень",
"activity_log.col.time": "Время",
"activity_log.detail.action": "Действие",
"activity_log.detail.actor": "Субъект",
"activity_log.detail.entity": "Сущность",
"activity_log.detail.id": "ID",
"activity_log.detail.metadata": "Метаданные",
"activity_log.detail.timestamp": "Метка времени",
"activity_log.detail.title": "Детали записи",
"activity_log.disabled": "Запись активности отключена.",
"activity_log.empty": "Нет записей, соответствующих текущим фильтрам.",
"activity_log.empty_no_filters": "Действия ещё не зафиксированы.",
"activity_log.error": "Не удалось загрузить журнал.",
"activity_log.export": "Экспорт",
"activity_log.export.csv": "Экспорт CSV",
"activity_log.export.downloading": "Загрузка…",
"activity_log.export.error": "Ошибка экспорта.",
"activity_log.export.json": "Экспорт JSON",
"activity_log.filter.actor": "Субъект",
"activity_log.filter.actor.placeholder": "system, имя API-ключа…",
"activity_log.filter.category": "Категория",
"activity_log.filter.clear": "Сбросить фильтры",
"activity_log.filter.entity_type": "Тип сущности",
"activity_log.filter.entity_type.placeholder": "output_target, device…",
"activity_log.filter.search": "Поиск сообщений…",
"activity_log.filter.severity": "Уровень",
"activity_log.filter.since": "С",
"activity_log.filter.title": "Фильтры",
"activity_log.filter.until": "По",
"activity_log.live": "В эфире",
"z2m_light.bulbs.one": "{count} лампа",
"z2m_light.bulbs.few": "{count} лампы",
"z2m_light.bulbs.many": "{count} ламп",
"activity_log.load_more": "Загрузить ещё",
"activity_log.loading": "Загрузка журнала…",
"activity_log.n_entries": "Записей: {n}",
"activity_log.new_entries": "+{n} новых",
"activity_log.preset.auth": "Авторизация",
"activity_log.preset.devices": "Устройства",
"activity_log.preset.errors": "Ошибки",
"activity_log.preset.today": "Сегодня",
"activity_log.severity.error": "Ошибка",
"activity_log.severity.info": "Информация",
"activity_log.severity.warning": "Предупреждение",
"activity_log.subtitle": "Журнал действий LedGrab",
"activity_log.title": "Активность",
"activity_log.msg.auth.rejected": "Ошибка аутентификации: {reason} (клиент: {client})",
"activity_log.msg.auth.ws_connected": "WebSocket-сессия установлена: '{actor}'",
"activity_log.msg.activity_log.cleared": "Журнал активности очищен пользователем '{actor}'",
"activity_log.msg.calibration.started": "Калибровка запущена",
"activity_log.msg.calibration.stopped": "Калибровка остановлена",
"activity_log.msg.calibration.cancelled": "Калибровка отменена",
"activity_log.msg.playlist.started": "Плейлист '{name}' запущен",
"activity_log.msg.playlist.stopped": "Плейлист '{name}' остановлен",
"activity_log.msg.scene.activated": "Сцена '{name}' активирована",
"activity_log.msg.device.adb_connected": "ADB подключён к {address}",
"activity_log.msg.device.adb_disconnected": "ADB отключён от {address}",
"activity_log.msg.device.discovered": "Устройство обнаружено по адресу {address}",
"activity_log.msg.device.lost": "Устройство потеряно по адресу {address}",
"activity_log.msg.device.online": "Устройство '{name}' в сети",
"activity_log.msg.device.offline": "Устройство '{name}' недоступно",
"activity_log.msg.update.applied": "Обновление применено",
"activity_log.msg.update.dismissed": "Обновление отклонено",
"activity_log.msg.settings.changed": "Параметр '{key}' изменён",
"activity_log.msg.audit_log.disabled": "Запись активности отключена",
"activity_log.msg.automation.activated": "Автоматизация '{name}' активирована",
"activity_log.msg.automation.deactivated": "Автоматизация '{name}' деактивирована",
"activity_log.msg.automation.triggered": "Автоматизация '{name}' запущена вручную",
"activity_log.msg.server.shutting_down": "Сервер выключается",
"activity_log.msg.server.restarting": "Запрошен перезапуск сервера",
"activity_log.msg.server.shutdown_requested": "Запрошено выключение сервера",
"activity_log.msg.backup.created": "Резервная копия создана",
"activity_log.msg.backup.restored": "Резервная копия восстановлена",
"activity_log.msg.backup.deleted": "Резервная копия удалена",
"activity_log.msg.capture.started": "Захват запущен для '{name}'",
"activity_log.msg.capture.stopped": "Захват остановлен для '{name}'",
"activity_log.msg.entity.created": "{type} '{name}' создан",
"activity_log.msg.entity.updated": "{type} '{name}' обновлён",
"activity_log.msg.entity.deleted": "{type} '{name}' удалён",
"activity_log.entity_type.output_target": "Цель вывода",
"activity_log.entity_type.device": "Устройство",
"activity_log.entity_type.picture_source": "Источник изображения",
"activity_log.entity_type.color_strip_source": "Источник цветовой полосы",
"activity_log.entity_type.audio_source": "Аудиоисточник",
"activity_log.entity_type.automation": "Автоматизация",
"activity_log.entity_type.scene_preset": "Пресет сцены",
"activity_log.entity_type.scene_playlist": "Плейлист сцен",
"activity_log.entity_type.sync_clock": "Синх-часы",
"activity_log.entity_type.template": "Шаблон",
"activity_log.entity_type.gradient": "Палитра",
"activity_log.entity_type.cspt": "Шаблон обработки",
"activity_log.entity_type.audio_template": "Аудиошаблон",
"activity_log.entity_type.audio_processing_template": "Шаблон аудиообработки",
"activity_log.entity_type.audio_processing_profile": "Профиль аудиообработки",
"activity_log.entity_type.http_endpoint": "HTTP-эндпоинт",
"activity_log.entity_type.mqtt_source": "MQTT-источник",
"activity_log.entity_type.home_assistant_source": "Источник Home Assistant",
"activity_log.entity_type.weather_source": "Источник погоды",
"activity_log.entity_type.game_integration": "Игровая интеграция",
"activity_log.entity_type.value_source": "Источник значений",
"activity_log.entity_type.asset": "Ресурс",
"api.error.network": "Ошибка сети — проверьте подключение",
"api.error.timeout": "Превышено время ожидания — попробуйте снова",
"api_key.login": "Войти",
"app.api_docs": "Документация API",
"app.connection_lost": "Сервер недоступен",
"app.connection_retrying": "Попытка переподключения…",
"app.server_restarting": "Сервер перезапускается…",
"app.server_restarting_sub": "Пожалуйста, подождите, сервер скоро вернётся.",
"app.title": "LED Grab",
"app.version": "Версия:",
"appearance.bg.applied": "Фоновый эффект применён",
"appearance.bg.aurora": "Северное сияние",
"appearance.bg.grid": "Точечная сетка",
"appearance.bg.hint": "Добавьте фоновый слой за интерфейсом.",
"appearance.bg.label": "Фоновые эффекты",
"appearance.bg.mesh": "Градиент",
"appearance.bg.noise": "Шумовое поле",
"appearance.bg.none": "Нет",
"appearance.bg.plasma": "Плазма",
"appearance.bg.rain": "Цифровой дождь",
"appearance.bg.scanlines": "Развёртка",
"appearance.bg.stars": "Звёздное поле",
"appearance.bg.warp": "Тоннель",
"appearance.preset.applied": "Стиль применён",
"appearance.preset.arctic": "Арктика",
"appearance.preset.copper": "Медь",
"appearance.preset.default": "Стандарт",
"appearance.preset.ember": "Угли",
"appearance.preset.midnight": "Полночь",
"appearance.preset.monolith": "Монолит",
"appearance.preset.neon": "Неон",
"appearance.preset.ocean": "Океан",
"appearance.preset.sakura": "Сакура",
"appearance.preset.terminal": "Терминал",
"appearance.preset.vapor": "Вейпорвейв",
"appearance.style.hint": "Выберите визуальную тему — шрифт и цветовая палитра применяются вместе.",
"appearance.style.label": "Стили оформления",
"aria.cancel": "Отмена",
"aria.close": "Закрыть",
"aria.hint": "Показать подсказку",
"aria.next": "Вперёд",
"aria.previous": "Назад",
"aria.save": "Сохранить",
"asset.confirm_delete": "Удалить этот ресурс?",
"asset.deleted": "Ресурс удалён",
"asset.description": "Описание:",
"asset.description.hint": "Необязательное описание ресурса.",
"asset.download": "Скачать",
"asset.drop_or_browse": "Перетащите файл сюда или нажмите для выбора",
"asset.edit": "Редактировать ресурс",
"asset.error.delete_failed": "Не удалось удалить ресурс",
"asset.error.download_failed": "Не удалось скачать ресурс",
"asset.error.name_required": "Название обязательно",
"asset.error.no_file": "Выберите файл для загрузки",
"asset.error.play_failed": "Не удалось воспроизвести звук",
"asset.file": "Файл:",
"asset.file.hint": "Выберите файл для загрузки (звук, изображение, видео или другое).",
"asset.group.title": "Ресурсы",
"asset.name": "Название:",
"asset.name.hint": "Отображаемое название ресурса.",
"asset.play": "Воспроизвести",
"asset.prebuilt": "Встроенный",
"asset.prebuilt_none_to_restore": "Все встроенные ресурсы уже доступны",
"asset.prebuilt_restored": "Восстановлено встроенных ресурсов: {count}",
"asset.restore_prebuilt": "Восстановить встроенные звуки",
"asset.type.image": "Изображение",
"asset.type.other": "Другое",
"asset.type.sound": "Звук",
"asset.type.video": "Видео",
"asset.updated": "Ресурс обновлён",
"asset.upload": "Загрузить ресурс",
"asset.uploaded": "Ресурс загружен",
"audio_processing.add": "Добавить шаблон обработки звука",
"audio_processing.created": "Шаблон обработки звука создан",
"audio_processing.delete.confirm": "Вы уверены, что хотите удалить этот шаблон обработки звука?",
"audio_processing.deleted": "Шаблон обработки звука удалён",
"audio_processing.description.hint": "Опишите назначение этого шаблона",
"audio_processing.description_label": "Описание (необязательно):",
"audio_processing.description_placeholder": "Опишите этот шаблон...",
"audio_processing.edit": "Редактировать шаблон обработки звука",
"audio_processing.error.clone_failed": "Не удалось клонировать шаблон обработки звука",
"audio_processing.error.delete": "Ошибка удаления шаблона обработки звука",
"audio_processing.error.load": "Ошибка загрузки шаблона обработки звука",
"audio_processing.error.required": "Пожалуйста, заполните все обязательные поля",
"audio_processing.error.save_failed": "Не удалось сохранить шаблон обработки звука",
"audio_processing.filter_count": "Количество фильтров",
"audio_processing.filters_label": "фильтров",
"audio_processing.name": "Название шаблона:",
"audio_processing.name.hint": "Описательное название для этого шаблона обработки звука",
"audio_processing.name_placeholder": "Мой шаблон обработки звука",
"audio_processing.title": "Шаблоны обработки звука",
"audio_processing.updated": "Шаблон обработки звука обновлён",
"audio_source.add": "Добавить аудиоисточник",
"audio_source.add.capture": "Добавить источник захвата",
"audio_source.add.processed": "Добавить обработанный источник",
"audio_source.audio_template": "Аудиошаблон:",
"audio_source.audio_template.hint": "Шаблон аудиозахвата определяет, какой движок и настройки использовать для этого устройства",
"audio_source.created": "Аудиоисточник создан",
"audio_source.delete.confirm": "Удалить этот аудиоисточник?",
"audio_source.deleted": "Аудиоисточник удалён",
"audio_source.description": "Описание (необязательно):",
"audio_source.description.hint": "Необязательные заметки об этом аудиоисточнике",
"audio_source.description.placeholder": "Опишите этот аудиоисточник...",
"audio_source.device": "Аудиоустройство:",
"audio_source.device.hint": "Источник аудиосигнала. Устройства обратной петли захватывают системный звук; устройства ввода — микрофон или линейный вход.",
"audio_source.edit": "Редактировать аудиоисточник",
"audio_source.edit.capture": "Редактировать источник захвата",
"audio_source.edit.processed": "Редактировать обработанный источник",
"audio_source.error.load": "Не удалось загрузить аудиоисточник",
"audio_source.error.name_required": "Введите название",
"audio_source.group.capture": "Захват звука",
"audio_source.group.processed": "Обработанные источники",
"audio_source.name": "Название:",
"audio_source.name.hint": "Описательное имя для этого аудиоисточника",
"audio_source.name.placeholder": "Системный звук",
"audio_source.parent": "Входной аудиоисточник:",
"audio_source.parent.hint": "Аудиоисточник для применения фильтров обработки",
"audio_source.processing_template": "Шаблон обработки:",
"audio_source.processing_template.hint": "Шаблон обработки аудио с фильтрами для применения к входному источнику",
"audio_source.refresh_devices": "Обновить устройства",
"audio_source.test": "Тест",
"audio_source.test.beat": "Бит",
"audio_source.test.connecting": "Подключение...",
"audio_source.test.error": "Ошибка теста аудио",
"audio_source.test.peak": "Пик",
"audio_source.test.rms": "RMS",
"audio_source.test.title": "Тест аудиоисточника",
"audio_source.title": "Аудиоисточники",
"audio_source.type": "Тип:",
"audio_source.type.capture": "Захват",
"audio_source.type.hint": "Захват оборачивает физическое аудиоустройство. Обработанный применяет фильтры обработки к другому источнику.",
"audio_source.type.processed": "Обработанный",
"audio_source.updated": "Аудиоисточник обновлён",
"audio_template.add": "Добавить аудиошаблон",
"audio_template.config": "Конфигурация",
"audio_template.config.show": "Показать конфигурацию",
"audio_template.created": "Аудиошаблон создан",
"audio_template.delete.confirm": "Удалить этот аудиошаблон?",
"audio_template.deleted": "Аудиошаблон удалён",
"audio_template.description.label": "Описание (необязательно):",
"audio_template.description.placeholder": "Опишите этот шаблон...",
"audio_template.edit": "Редактировать аудиошаблон",
"audio_template.engine": "Аудиодвижок:",
"audio_template.engine.hint": "Выберите движок аудиозахвата. WASAPI — только Windows с поддержкой loopback. Sounddevice — кроссплатформенный.",
"audio_template.engine.unavailable": "Недоступен",
"audio_template.engine.unavailable.hint": "Этот движок недоступен в вашей системе",
"audio_template.error.clone_failed": "Не удалось клонировать аудиошаблон",
"audio_template.error.delete": "Не удалось удалить аудиошаблон",
"audio_template.error.engines": "Не удалось загрузить аудиодвижки",
"audio_template.error.load": "Не удалось загрузить аудиошаблоны",
"audio_template.error.load_failed": "Не удалось загрузить аудиошаблон",
"audio_template.error.required": "Пожалуйста, заполните все обязательные поля",
"audio_template.error.save_failed": "Не удалось сохранить аудиошаблон",
"audio_template.name": "Название шаблона:",
"audio_template.name.placeholder": "Мой аудиошаблон",
"audio_template.test": "Тест",
"audio_template.test.device": "Аудиоустройство:",
"audio_template.test.device.hint": "Выберите устройство для захвата звука во время теста",
"audio_template.test.run": "Запуск",
"audio_template.test.title": "Тест аудиошаблона",
"audio_template.title": "Аудиошаблоны",
"audio_template.updated": "Аудиошаблон обновлён",
"auth.authenticated": "● Авторизован",
"auth.button.cancel": "Отмена",
"auth.button.login": "Войти",
"auth.error.invalid": "Неверный API ключ. Попробуйте ещё раз.",
"auth.error.required": "Пожалуйста, введите API ключ",
"auth.hint": "Ваш API ключ будет безопасно сохранен в локальном хранилище браузера.",
"auth.label": "API Ключ:",
"auth.login": "Войти",
"auth.logout": "Выйти",
"auth.logout.confirm": "Вы уверены, что хотите выйти?",
"auth.logout.success": "Выход выполнен успешно",
"auth.message": "Пожалуйста, введите ваш API ключ для аутентификации и доступа к LED Grab.",
"auth.placeholder": "Введите ваш API ключ...",
"auth.please_login": "Пожалуйста, войдите для просмотра",
"auth.prompt_enter": "Введите ваш API-ключ:",
"auth.prompt_update": "API-ключ уже задан. Введите новый ключ для замены или оставьте поле пустым, чтобы удалить:",
"auth.session_expired": "Ваша сессия истекла или API ключ недействителен. Пожалуйста, войдите снова.",
"auth.success": "Вход выполнен успешно!",
"auth.title": "Вход в LED Grab",
"auth.toggle_password": "Показать/скрыть пароль",
"autocal.btn.back": "Назад",
"autocal.btn.cancel": "Отмена",
"autocal.btn.mark_corner": "Отметить угол",
"autocal.btn.next": "Далее",
"autocal.btn.save": "Сохранить",
"autocal.btn.solve": "Вычислить",
"autocal.btn.step_back": "Шаг назад",
"autocal.btn.step_fwd": "Шаг вперёд",
"autocal.corner.desc": "В каком углу находится светодиод №0 (самый первый светодиод полосы)?",
"autocal.corner.led_index": "Позиция LED 0",
"autocal.corner.title": "Начальный угол",
"autocal.corners.desc": "Переместитесь к следующему углу и нажмите «Отметить». Угол: {corner}",
"autocal.corners.desc_complete": "Все 4 угла отмечены! Проверьте и продолжите.",
"autocal.corners.index_label": "Индекс LED",
"autocal.corners.title": "Отметьте углы — осталось {remaining}",
"autocal.device.desc": "Выберите устройство WLED, управляющее этой LED-полосой. Во время калибровки полоса ненадолго загорится.",
"autocal.device.label": "Устройство",
"autocal.device.title": "Выбор устройства",
"autocal.direction.desc": "В каком направлении идёт полоса от начального угла?",
"autocal.direction.title": "Направление полосы — шаг {step}",
"autocal.error.css_required": "Авто-калибровка требует источника цветовой полосы (не только устройства).",
"autocal.error.no_device": "Пожалуйста, выберите устройство для продолжения.",
"autocal.error.position_failed": "Не удалось переместиться к позиции LED.",
"autocal.error.save_failed": "Не удалось сохранить калибровку.",
"autocal.error.session_start_failed": "Не удалось начать сеанс калибровки.",
"autocal.error.session_stop_failed": "Не удалось завершить сеанс калибровки.",
"autocal.error.solve_failed": "Не удалось вычислить калибровку.",
"autocal.modal.title": "Авто-калибровка полосы",
"autocal.position.bottom_left": "Нижний левый",
"autocal.position.bottom_right": "Нижний правый",
"autocal.position.top_left": "Верхний левый",
"autocal.position.top_right": "Верхний правый",
"autocal.preview.bottom": "Нижних LED",
"autocal.preview.desc": "Проверьте обнаруженную раскладку и сохраните в источник полосы.",
"autocal.preview.left": "Левых LED",
"autocal.preview.right": "Правых LED",
"autocal.preview.start": "Начальный угол",
"autocal.preview.title": "Предпросмотр и сохранение",
"autocal.preview.top": "Верхних LED",
"autocal.preview.total": "Всего LED",
"autocal.saved": "Калибровка успешно сохранена.",
"autocal.trigger.hint": "Автоматически определить позиции светодиодов путём обхода полосы",
"autocal.trigger.label": "Авто-калибровка",
"automation.disabled": "Автоматизация выключена",
"automation.enabled": "Автоматизация включена",
"automations.action.disable": "Отключить",
"automations.action.trigger": "Запустить",
"automations.add": "Добавить автоматизацию",
"automations.created": "Автоматизация создана",
"automations.deactivation_mode": "Деактивация:",
"automations.deactivation_mode.fallback_scene": "Резервная",
"automations.deactivation_mode.fallback_scene.desc": "Активировать резервную сцену",
"automations.deactivation_mode.hint": "Что происходит, когда условия перестают выполняться",
"automations.deactivation_mode.none": "Ничего",
"automations.deactivation_mode.none.desc": "Оставить текущее состояние",
"automations.deactivation_mode.revert": "Откатить",
"automations.deactivation_mode.revert.desc": "Вернуть предыдущее состояние",
"automations.deactivation_scene": "Резервная сцена:",
"automations.deactivation_scene.hint": "Сцена для активации при деактивации автоматизации",
"automations.delete.confirm": "Удалить автоматизацию \"{name}\"?",
"automations.deleted": "Автоматизация удалена",
"automations.edit": "Редактировать автоматизацию",
"automations.empty": "Автоматизации не настроены. Создайте автоматизацию для автоматической активации сцен.",
"automations.enabled": "Включена:",
"automations.enabled.hint": "Отключённые автоматизации не активируются даже при выполнении условий",
"automations.error.clone_failed": "Не удалось клонировать автоматизацию",
"automations.error.delete_failed": "Не удалось удалить автоматизацию",
"automations.error.load_failed": "Не удалось загрузить автоматизацию",
"automations.error.name_required": "Введите название",
"automations.error.save_failed": "Не удалось сохранить автоматизацию",
"automations.error.toggle_failed": "Не удалось переключить автоматизацию",
"automations.error.trigger_failed": "Не удалось запустить автоматизацию",
"automations.last_activated": "Последняя активация",
"automations.logic.all": "ВСЕ",
"automations.logic.and": " И ",
"automations.logic.any": "ЛЮБОЕ",
"automations.logic.or": " ИЛИ ",
"automations.name": "Название:",
"automations.name.hint": "Описательное имя для автоматизации",
"automations.name.placeholder": "Моя автоматизация",
"automations.rule.application": "Приложение",
"automations.rule.application.apps": "Приложения:",
"automations.rule.application.apps.hint": "Имена процессов, по одному на строку (например firefox.exe)",
"automations.rule.application.apps.hint_android": "Имена пакетов, по одному в строке (напр. com.netflix.mediaclient)",
"automations.rule.application.browse": "Обзор",
"automations.rule.application.desc": "Приложение запущено",
"automations.rule.application.match_type": "Тип соответствия:",
"automations.rule.application.match_type.fullscreen": "Полный экран",
"automations.rule.application.match_type.fullscreen.desc": "Любое полноэкранное",
"automations.rule.application.match_type.hint": "Как определять наличие приложения",
"automations.rule.application.match_type.running": "Запущено",
"automations.rule.application.match_type.running.desc": "Процесс активен",
"automations.rule.application.match_type.topmost": "На переднем плане",
"automations.rule.application.match_type.topmost.desc": "Окно в фокусе",
"automations.rule.application.match_type.topmost_fullscreen": "Передний план + ПЭ",
"automations.rule.application.match_type.topmost_fullscreen.desc": "В фокусе + полный экран",
"automations.rule.application.no_apps": "Приложения не найдены",
"automations.rule.application.no_processes": "Процессы не найдены",
"automations.rule.application.search": "Фильтр процессов...",
"automations.rule.application.search_apps": "Поиск приложений...",
"automations.rule.application.usage_access_required": "Требуется доступ к статистике использования. Откройте LedGrab на телевизоре и нажмите «Разрешить доступ к статистике использования».",
"automations.rule.display_state": "Состояние дисплея",
"automations.rule.display_state.desc": "Монитор вкл/выкл",
"automations.rule.display_state.off": "Выключен (спящий режим)",
"automations.rule.display_state.on": "Включён",
"automations.rule.display_state.state": "Состояние монитора:",
"automations.rule.http_poll": "HTTP-опрос",
"automations.rule.http_poll.desc": "Срабатывает, когда последнее значение HTTP-источника соответствует условию.",
"automations.rule.http_poll.hint": "Сравнивает последнее извлечённое значение с вашим вводом. Что именно извлекается (тело или JSON-путь), задаётся в источнике-значении.",
"automations.rule.http_poll.no_source": "(нет источника)",
"automations.rule.http_poll.operator": "Оператор",
"automations.rule.http_poll.operator.contains": "Содержит",
"automations.rule.http_poll.operator.contains.desc": "Поиск подстроки.",
"automations.rule.http_poll.operator.equals": "Равно",
"automations.rule.http_poll.operator.equals.desc": "Точное совпадение строки.",
"automations.rule.http_poll.operator.exists": "Существует",
"automations.rule.http_poll.operator.exists.desc": "Срабатывает, когда значение успешно извлечено (само значение игнорируется).",
"automations.rule.http_poll.operator.gt": "Больше",
"automations.rule.http_poll.operator.gt.desc": "Числовое сравнение (\u003e) — нужно числовое значение.",
"automations.rule.http_poll.operator.lt": "Меньше",
"automations.rule.http_poll.operator.lt.desc": "Числовое сравнение (\u003c) — нужно числовое значение.",
"automations.rule.http_poll.operator.not_equals": "Не равно",
"automations.rule.http_poll.operator.not_equals.desc": "Срабатывает, когда значение отличается.",
"automations.rule.http_poll.operator.regex": "Regex",
"automations.rule.http_poll.operator.regex.desc": "Регулярное выражение в стиле JavaScript.",
"automations.rule.http_poll.raw_body": "Тело ответа",
"automations.rule.http_poll.value": "Значение",
"automations.rule.http_poll.value.placeholder": "playing",
"automations.rule.http_poll.value_source": "HTTP источник-значения",
"automations.rule.manual_trigger": "Ручной запуск",
"automations.rule.manual_trigger.desc": "Запуск по кнопке",
"automations.rule.manual_trigger.hint": "Активируется только при нажатии кнопки «Запустить» на карточке автоматизации (остальные правила автоматизации по-прежнему проверяются).",
"automations.rule.mqtt": "MQTT",
"automations.rule.mqtt.desc": "MQTT сообщение",
"automations.rule.mqtt.hint": "Активировать при получении совпадающего значения по MQTT топику",
"automations.rule.mqtt.match_mode": "Режим сравнения:",
"automations.rule.mqtt.match_mode.contains": "Содержит",
"automations.rule.mqtt.match_mode.exact": "Точное совпадение",
"automations.rule.mqtt.match_mode.regex": "Регулярное выражение",
"automations.rule.mqtt.payload": "Значение:",
"automations.rule.mqtt.topic": "Топик:",
"automations.rule.startup": "Автозапуск",
"automations.rule.startup.desc": "При запуске сервера",
"automations.rule.startup.hint": "Активируется при запуске сервера и остаётся активной пока включена.",
"automations.rule.system_idle": "Бездействие системы",
"automations.rule.system_idle.desc": "Бездействие/активность",
"automations.rule.system_idle.idle_minutes": "Тайм-аут бездействия (минуты):",
"automations.rule.system_idle.mode": "Режим срабатывания:",
"automations.rule.system_idle.when_active": "При активности",
"automations.rule.system_idle.when_active.desc": "Срабатывает, пока пользователь активно работает с системой",
"automations.rule.system_idle.when_idle": "При бездействии",
"automations.rule.system_idle.when_idle.desc": "Срабатывает, когда пользователь не активен дольше тайм-аута",
"automations.rule.solar": "Солнце (восход / закат)",
"automations.rule.solar.desc": "Относительно восхода/заката",
"automations.rule.solar.hint": "Активируется в окне относительно восхода и заката в вашем расположении. По умолчанию — от заката до восхода — это режим «активно ночью».",
"automations.rule.solar.start": "Окно открывается в",
"automations.rule.solar.end": "Окно закрывается в",
"automations.rule.solar.event.sunrise": "Восход",
"automations.rule.solar.event.sunset": "Закат",
"automations.rule.solar.offset": "Смещение в минутах (отрицательное — до события, положительное — после)",
"automations.rule.solar.offset.unit": "мин",
"automations.rule.solar.latitude": "Широта",
"automations.rule.solar.longitude": "Долгота",
"automations.rule.solar.location_hint": "Укажите широту и долготу, чтобы восход и закат вычислялись для вашего расположения.",
"automations.rule.time_of_day": "Время суток",
"automations.rule.time_of_day.days": "Активные дни",
"automations.rule.time_of_day.days_hint": "Оставьте всё невыбранным для всех дней. Ночные окна относятся ко дню, когда они начинаются.",
"automations.rule.time_of_day.desc": "Диапазон времени",
"automations.rule.time_of_day.end_time": "Время окончания:",
"automations.rule.time_of_day.overnight_hint": "Для ночных диапазонов (например 22:00–06:00) укажите время начала позже времени окончания.",
"automations.rule.time_of_day.start_time": "Время начала:",
"automations.rule.time_of_day.timezone": "Часовой пояс",
"automations.rule.time_of_day.timezone.placeholder": "Локальное время сервера (напр. Europe/Berlin)",
"automations.rule.webhook": "Вебхук",
"automations.rule.webhook.copied": "Скопировано!",
"automations.rule.webhook.copy": "Скопировать",
"automations.rule.webhook.desc": "HTTP вызов",
"automations.rule.webhook.hint": "Активировать через HTTP-запрос от внешних сервисов (Home Assistant, IFTTT, curl и т.д.)",
"automations.rule.webhook.save_first": "Сначала сохраните автоматизацию для генерации URL вебхука",
"automations.rule.webhook.url": "URL вебхука:",
"automations.rule_logic": "Логика условий:",
"automations.rule_logic.and": "Все условия (И)",
"automations.rule_logic.and.desc": "Срабатывает только при всех",
"automations.rule_logic.hint": "Как объединяются несколько условий: ЛЮБОЕ (ИЛИ) или ВСЕ (И)",
"automations.rule_logic.or": "Любое условие (ИЛИ)",
"automations.rule_logic.or.desc": "Срабатывает при любом совпадении",
"automations.rules": "Условия:",
"automations.rules.add": "Добавить условие",
"automations.rules.empty": "Нет условий — автоматизация всегда активна когда включена",
"automations.rules.hint": "Правила, определяющие когда автоматизация активируется",
"automations.scene": "Сцена:",
"automations.scene.hint": "Пресет сцены для активации при выполнении условий",
"automations.scene.none_available": "Нет доступных сцен",
"automations.scene.none_selected": "Нет (без сцены)",
"automations.scene.search_placeholder": "Поиск сцен...",
"automations.section.action": "Действие",
"automations.section.deactivation": "Деактивация",
"automations.section.triggers": "Триггеры",
"automations.status.active": "Активна",
"automations.status.disabled": "Отключена",
"automations.status.inactive": "Неактивна",
"automations.title": "Автоматизации",
"automations.trigger.partial": "Запущено с ошибками",
"automations.trigger.skipped": "Условия не выполнены — автоматизация не запущена",
"automations.trigger.tooltip": "Запустить эту автоматизацию сейчас (правила по-прежнему проверяются)",
"automations.triggered": "Автоматизация запущена",
"automations.updated": "Автоматизация обновлена",
"bg.anim.toggle": "Анимированный фон",
"bindable.none": "Нет (статическое значение)",
"bindable.toggle": "Привязка к источнику значений",
"bulk.cancel": "Отмена",
"bulk.confirm_delete.few": "Удалить {count} элемента?",
"bulk.confirm_delete.many": "Удалить {count} элементов?",
"bulk.confirm_delete.one": "Удалить {count} элемент?",
"bulk.delete": "Удалить",
"bulk.deselect_all": "Снять выбор",
"bulk.disable": "Выключить",
"bulk.enable": "Включить",
"bulk.processing": "Обработка…",
"bulk.select": "Выбрать",
"bulk.select_all": "Выбрать все",
"bulk.selected_count.few": "{count} выбрано",
"bulk.selected_count.many": "{count} выбрано",
"bulk.selected_count.one": "{count} выбран",
"bulk.start": "Запустить",
"bulk.stop": "Остановить",
"calibration.advanced.border_width": "Глубина (пкс):",
"calibration.advanced.border_width.hint": "Сколько пикселей вглубь от края захватывать. Большие значения берут больше внутренней части экрана.",
"calibration.advanced.canvas_hint": "Перетаскивайте мониторы. Нажимайте на грани для выбора линий. Прокрутка — масштаб, перетаскивание пустого места — сдвиг.",
"calibration.advanced.edge": "Грань:",
"calibration.advanced.edge.hint": "С какой грани экрана снимать пиксели",
"calibration.advanced.led_count": "Светодиоды:",
"calibration.advanced.led_count.hint": "Количество светодиодов на этой линии",
"calibration.advanced.line_properties": "Свойства линии",
"calibration.advanced.lines_title": "Линии",
"calibration.advanced.no_lines_warning": "Добавьте хотя бы одну линию",
"calibration.advanced.picture_source": "Источник:",
"calibration.advanced.picture_source.hint": "Источник изображения (монитор), с которого эта линия снимает данные",
"calibration.advanced.reset_view": "Сбросить вид",
"calibration.advanced.reverse": "Реверс",
"calibration.advanced.span_end": "Конец:",
"calibration.advanced.span_end.hint": "Где заканчивается захват вдоль грани (0 = начало, 1 = конец). Вместе с «Начало» определяет активный участок.",
"calibration.advanced.span_start": "Начало:",
"calibration.advanced.span_start.hint": "Откуда начинается захват вдоль грани (0 = начало, 1 = конец). Позволяет покрыть только часть грани.",
"calibration.advanced.switch_to_simple": "Простой режим",
"calibration.advanced.title": "Расширенная калибровка",
"calibration.border_width": "Граница (px):",
"calibration.linear_blend": "Смешивание в линейном свете",
"calibration.linear_blend.hint": "Усреднять пиксели границы в линейном свете для перцептивно корректного, более яркого смешивания цветов.",
"calibration.dither": "Дизеринг",
"calibration.dither.hint": "Пространственно-временной дизеринг уменьшает заметные полосы на плавных градиентах.",
"calibration.border_width.hint": "Сколько пикселей от края экрана выбирать для цвета LED (1-100)",
"calibration.button.cancel": "Отмена",
"calibration.button.save": "Сохранить",
"calibration.corner.bottom_left": "Задать начальную позицию: нижний левый угол",
"calibration.corner.bottom_right": "Задать начальную позицию: нижний правый угол",
"calibration.corner.top_left": "Задать начальную позицию: верхний левый угол",
"calibration.corner.top_right": "Задать начальную позицию: верхний правый угол",
"calibration.direction": "Направление:",
"calibration.direction.clockwise": "По Часовой Стрелке",
"calibration.direction.counterclockwise": "Против Часовой Стрелки",
"calibration.direction.toggle": "Переключить направление",
"calibration.edge.bottom": "Переключить тестовые светодиоды нижнего края",
"calibration.edge.left": "Переключить тестовые светодиоды левого края",
"calibration.edge.right": "Переключить тестовые светодиоды правого края",
"calibration.edge.top": "Переключить тестовые светодиоды верхнего края",
"calibration.edge_inputs.toggle": "Переключить поля ввода светодиодов по краям",
"calibration.error.css_load_failed": "Не удалось загрузить источник цветовой полосы",
"calibration.error.led_count_exceeded": "Калиброванных LED больше, чем общее количество LED",
"calibration.error.led_count_mismatch": "Общее количество LED должно совпадать с количеством LED устройства",
"calibration.error.load_failed": "Не удалось загрузить калибровку",
"calibration.error.save_failed": "Не удалось сохранить калибровку",
"calibration.error.test_toggle_failed": "Не удалось переключить тестовый край",
"calibration.failed": "Не удалось сохранить калибровку",
"calibration.leds.bottom": "Светодиодов Снизу:",
"calibration.leds.left": "Светодиодов Слева:",
"calibration.leds.right": "Светодиодов Справа:",
"calibration.leds.top": "Светодиодов Сверху:",
"calibration.mode.advanced": "Расширенный",
"calibration.mode.simple": "Простой",
"calibration.offset": "Смещение LED:",
"calibration.offset.hint": "Расстояние от физического LED 0 до стартового угла (по направлению ленты)",
"calibration.overlay_toggle": "Оверлей",
"calibration.position.bottom_left": "Нижний Левый",
"calibration.position.bottom_right": "Нижний Правый",
"calibration.position.top_left": "Верхний Левый",
"calibration.position.top_right": "Верхний Правый",
"calibration.roi": "Область захвата (%):",
"calibration.roi.height": "Высота (%)",
"calibration.roi.hint": "Брать пиксели только из этого прямоугольника экрана, чтобы панель задач, интерфейс игры или чёрные полосы не искажали цвета краёв. Весь экран = X/Y 0, Ширина/Высота 100.",
"calibration.roi.width": "Ширина (%)",
"calibration.roi.x": "X (%)",
"calibration.roi.y": "Y (%)",
"calibration.saved": "Калибровка сохранена",
"calibration.skip_end": "Пропуск LED (конец):",
"calibration.skip_end.hint": "Количество LED, которые будут выключены в конце ленты (0 = нет)",
"calibration.skip_start": "Пропуск LED (начало):",
"calibration.skip_start.hint": "Количество LED, которые будут выключены в начале ленты (0 = нет)",
"calibration.start_position": "Начальная Позиция:",
"calibration.switch_to_advanced": "Расширенный режим",
"calibration.tip.border_width": "Сколько пикселей от края экрана использовать для цветов LED",
"calibration.tip.direction": "Переключение направления ленты (по часовой / против часовой)",
"calibration.tip.led_count": "Укажите количество LED на каждой стороне",
"calibration.tip.offset": "Смещение LED — расстояние от LED 0 до стартового угла",
"calibration.tip.overlay": "Включите оверлей для отображения позиций и нумерации LED на мониторе",
"calibration.tip.skip_leds_end": "Пропуск LED в конце ленты — пропущенные LED остаются выключенными",
"calibration.tip.skip_leds_start": "Пропуск LED в начале ленты — пропущенные LED остаются выключенными",
"calibration.tip.span": "Перетащите зелёные полосы для настройки зоны покрытия",
"calibration.tip.start_corner": "Нажмите на угол для выбора стартовой позиции",
"calibration.tip.test": "Нажмите на край для теста LED",
"calibration.tip.toggle_inputs": "Нажмите на общее количество LED для скрытия боковых полей",
"calibration.title": "Калибровка Светодиодов",
"calibration.tutorial.start": "Начать обучение",
"card_mode.comfortable": "Просторно",
"card_mode.compact": "Компактно",
"card_mode.dense": "Плотно",
"card_mode.row": "Список",
"card_mode.tooltip": "Размер карточек",
"color_strip.add": "Добавить",
"color_strip.animation": "Анимация",
"color_strip.animation.speed": "Скорость:",
"color_strip.animation.speed.hint": "Множитель скорости анимации. 1.0 ≈ один цикл в секунду для дыхания; большие значения ускоряют анимацию.",
"color_strip.animation.type": "Эффект:",
"color_strip.animation.type.breathing": "Дыхание",
"color_strip.animation.type.breathing.desc": "Плавное угасание и нарастание яркости",
"color_strip.animation.type.candle": "Свеча",
"color_strip.animation.type.candle.desc": "Тёплое мерцание, как у свечи",
"color_strip.animation.type.gradient_shift": "Сдвиг градиента",
"color_strip.animation.type.gradient_shift.desc": "Сдвигает градиент вдоль ленты",
"color_strip.animation.type.hint": "Эффект анимации.",
"color_strip.animation.type.none": "Нет (без эффекта анимации)",
"color_strip.animation.type.none.desc": "Статичные цвета без анимации",
"color_strip.animation.type.pulse": "Пульс",
"color_strip.animation.type.pulse.desc": "Резкая вспышка яркости с быстрым затуханием",
"color_strip.animation.type.rainbow_fade": "Радужный перелив",
"color_strip.animation.type.rainbow_fade.desc": "Циклический переход по всему спектру оттенков",
"color_strip.animation.type.sparkle": "Искры",
"color_strip.animation.type.sparkle.desc": "Случайные светодиоды кратковременно вспыхивают",
"color_strip.animation.type.strobe": "Стробоскоп",
"color_strip.animation.type.strobe.desc": "Быстрое мигание вкл/выкл",
"color_strip.animation.type.wave": "Волна",
"color_strip.animation.type.wave.desc": "Синусоидальная волна яркости вдоль ленты",
"color_strip.api_input.endpoints": "Эндпоинты для отправки:",
"color_strip.api_input.endpoints.hint": "Используйте эти URL для отправки данных о цветах LED из вашего внешнего приложения. REST принимает JSON, WebSocket принимает как JSON, так и бинарные кадры.",
"color_strip.api_input.fallback_color": "Цвет по умолчанию:",
"color_strip.api_input.fallback_color.hint": "Цвет для отображения, когда данные не получены в течение периода ожидания. LED покажут этот цвет при запуске и после потери соединения.",
"color_strip.api_input.interpolation": "Интерполяция LED:",
"color_strip.api_input.interpolation.hint": "Как масштабировать входящие данные LED, когда их количество отличается от количества LED на устройстве. Линейная — плавное смешивание, Ближайший — чёткие границы, Нет — обрезка или дополнение нулями.",
"color_strip.api_input.interpolation.linear": "Линейная",
"color_strip.api_input.interpolation.linear.desc": "Плавное смешивание между LED",
"color_strip.api_input.interpolation.nearest": "Ближайший",
"color_strip.api_input.interpolation.nearest.desc": "Чёткие границы, без смешивания",
"color_strip.api_input.interpolation.none": "Нет",
"color_strip.api_input.interpolation.none.desc": "Обрезка или дополнение нулями",
"color_strip.api_input.save_first": "Сначала сохраните источник, чтобы увидеть URL эндпоинтов.",
"color_strip.api_input.timeout": "Тайм-аут (секунды):",
"color_strip.api_input.timeout.hint": "Время ожидания новых данных о цветах перед возвратом к цвету по умолчанию. Установите 0, чтобы не использовать тайм-аут.",
"color_strip.audio.beat_decay": "Затухание бита:",
"color_strip.audio.beat_decay.hint": "Скорость затухания пульса. Меньшие значения = более долгое затухание, большие = более резкая реакция.",
"color_strip.audio.color": "Базовый цвет:",
"color_strip.audio.color.hint": "Цвет низкого уровня для полосы VU-метра.",
"color_strip.audio.color_peak": "Пиковый цвет:",
"color_strip.audio.color_peak.hint": "Цвет высокого уровня в верхней части полосы VU-метра.",
"color_strip.audio.mirror": "Зеркало:",
"color_strip.audio.mirror.hint": "Зеркалирование спектра от центра к краям: басы в середине, высокие частоты по краям.",
"color_strip.audio.palette": "Палитра:",
"color_strip.audio.palette.hint": "Цветовая палитра для полос спектра или пульсации бита.",
"color_strip.audio.sensitivity": "Чувствительность:",
"color_strip.audio.sensitivity.hint": "Множитель усиления аудиосигнала. Более высокие значения делают LED чувствительнее к тихим звукам.",
"color_strip.audio.smoothing": "Сглаживание:",
"color_strip.audio.smoothing.hint": "Временное сглаживание между кадрами. Более высокие значения дают плавную, но медленнее реагирующую визуализацию.",
"color_strip.audio.source": "Аудиоисточник:",
"color_strip.audio.source.hint": "Аудиоисточник для визуализации. Может быть многоканальным (устройство) или моно (один канал). Создавайте и управляйте аудиоисточниками на вкладке Источники.",
"color_strip.audio.visualization": "Визуализация:",
"color_strip.audio.visualization.hint": "Способ отображения аудиоданных на LED.",
"color_strip.audio.viz.beat_pulse": "Пульс бита",
"color_strip.audio.viz.beat_pulse.desc": "Все LED пульсируют в такт",
"color_strip.audio.viz.energy_gradient": "Энергетический градиент",
"color_strip.audio.viz.energy_gradient.desc": "Интенсивность градиента следует за энергией звука",
"color_strip.audio.viz.pulse_on_beat": "Пульс на бит",
"color_strip.audio.viz.pulse_on_beat.desc": "LED пульсируют при каждом ударе",
"color_strip.audio.viz.spectrum": "Анализатор спектра",
"color_strip.audio.viz.spectrum.desc": "Частотные полосы по ленте",
"color_strip.audio.viz.spectrum_bands": "Полосы спектра",
"color_strip.audio.viz.spectrum_bands.desc": "Группы частот по ленте",
"color_strip.audio.viz.strobe_on_drop": "Стробоскоп на дропе",
"color_strip.audio.viz.strobe_on_drop.desc": "Вспышка стробоскопа на басовых дропах",
"color_strip.audio.viz.vu_meter": "VU-метр",
"color_strip.audio.viz.vu_meter.desc": "Уровень громкости заполняет ленту",
"color_strip.brightness": "Яркость:",
"color_strip.brightness.hint": "Множитель яркости (0=выкл, 1=без изменений, 2=двойная). Применяется после извлечения цвета.",
"color_strip.candlelight.color": "Базовый цвет:",
"color_strip.candlelight.color.hint": "Тёплый базовый цвет пламени свечи. По умолчанию — натуральный тёплый янтарь.",
"color_strip.candlelight.intensity": "Интенсивность мерцания:",
"color_strip.candlelight.intensity.hint": "Сила мерцания свечей. Низкие значения — мягкое свечение, высокие — свеча на ветру.",
"color_strip.candlelight.num_candles": "свечей",
"color_strip.candlelight.num_candles.hint": "Сколько независимых источников свечей вдоль ленты. Каждый мерцает по-своему.",
"color_strip.candlelight.num_candles_label": "Количество свечей:",
"color_strip.candlelight.speed": "Скорость мерцания:",
"color_strip.candlelight.speed.hint": "Скорость анимации мерцания. Большие значения — более быстрое, беспокойное пламя.",
"color_strip.clock": "Часы синхронизации:",
"color_strip.clock.hint": "Привязка к часам для синхронизации анимации между источниками. Скорость управляется на часах.",
"color_strip.color_corrections": "Цветокоррекция",
"color_strip.composite.add_layer": "Добавить слой",
"color_strip.composite.blend_mode": "Смешивание",
"color_strip.composite.blend_mode.add": "Сложение",
"color_strip.composite.blend_mode.add.desc": "Осветляет, складывая цвета",
"color_strip.composite.blend_mode.difference": "Разница",
"color_strip.composite.blend_mode.difference.desc": "Абсолютная разница цветов",
"color_strip.composite.blend_mode.exclusion": "Исключение",
"color_strip.composite.blend_mode.exclusion.desc": "Как разница, но мягче",
"color_strip.composite.blend_mode.hard_light": "Жёсткий свет",
"color_strip.composite.blend_mode.hard_light.desc": "Сильный контраст, яркие цвета",
"color_strip.composite.blend_mode.multiply": "Умножение",
"color_strip.composite.blend_mode.multiply.desc": "Затемняет, умножая цвета",
"color_strip.composite.blend_mode.normal": "Обычное",
"color_strip.composite.blend_mode.normal.desc": "Стандартное альфа-смешивание",
"color_strip.composite.blend_mode.overlay": "Наложение",
"color_strip.composite.blend_mode.overlay.desc": "Умножение тёмных, осветление светлых",
"color_strip.composite.blend_mode.override": "Замена",
"color_strip.composite.blend_mode.override.desc": "Чёрный = прозрачный, яркий = непрозрачный",
"color_strip.composite.blend_mode.screen": "Экран",
"color_strip.composite.blend_mode.screen.desc": "Осветляет, обратное умножение",
"color_strip.composite.blend_mode.soft_light": "Мягкий свет",
"color_strip.composite.blend_mode.soft_light.desc": "Мягкая коррекция контраста",
"color_strip.composite.brightness": "Яркость",
"color_strip.composite.brightness.none": "Нет (полная яркость)",
"color_strip.composite.enabled": "Включён",
"color_strip.composite.error.min_layers": "Необходим хотя бы 1 слой",
"color_strip.composite.error.no_source": "Для каждого слоя должен быть выбран источник",
"color_strip.composite.layers": "Слои:",
"color_strip.composite.layers.hint": "Наложение нескольких источников. Первый слой — нижний, последний — верхний. Каждый слой может иметь свой режим смешивания и прозрачность.",
"color_strip.composite.layers_count": "слоёв",
"color_strip.composite.opacity": "Непрозрачность",
"color_strip.composite.processing": "Обработка",
"color_strip.composite.range": "Диапазон LED",
"color_strip.composite.range_end": "Конец",
"color_strip.composite.range_start": "Начало",
"color_strip.composite.reverse": "Реверс",
"color_strip.composite.source": "Источник",
"color_strip.created": "Источник цветовой полосы создан",
"color_strip.daylight.latitude": "Широта:",
"color_strip.daylight.latitude.hint": "Географическая широта (-90 до 90). Влияет на время восхода/заката в режиме реального времени.",
"color_strip.daylight.real_time": "Реальное время",
"color_strip.daylight.speed": "Скорость:",
"color_strip.daylight.speed.hint": "Множитель скорости цикла. 1.0 = полный цикл день/ночь за ~4 минуты.",
"color_strip.daylight.use_real_time": "Реальное время:",
"color_strip.daylight.use_real_time.hint": "Если включено, цвет LED соответствует реальному времени суток. Настройка скорости игнорируется.",
"color_strip.delete.confirm": "Удалить этот источник цветовой полосы?",
"color_strip.delete.referenced": "Невозможно удалить: источник используется в цели",
"color_strip.deleted": "Источник цветовой полосы удалён",
"color_strip.edit": "Редактировать",
"color_strip.effect.aurora": "Аврора",
"color_strip.effect.aurora.desc": "Наложенные шумовые полосы, дрейфующие и смешивающиеся — в стиле северного сияния",
"color_strip.effect.color": "Цвет метеора:",
"color_strip.effect.color.hint": "Цвет головной точки метеора.",
"color_strip.effect.fire": "Огонь",
"color_strip.effect.fire.desc": "Клеточный автомат, имитирующий поднимающееся пламя с диффузией тепла",
"color_strip.effect.intensity": "Интенсивность:",
"color_strip.effect.intensity.hint": "Интенсивность эффекта — частота искр (огонь), затухание хвоста (метеор) или диапазон яркости (аврора).",
"color_strip.effect.meteor": "Метеор",
"color_strip.effect.meteor.desc": "Яркая точка движется по ленте с экспоненциально затухающим хвостом",
"color_strip.effect.mirror": "Отражение:",
"color_strip.effect.reactive": "Реакция на звук:",
"color_strip.effect.reactive.hint": "Модулировать яркость и/или насыщенность этого эффекта по громкости звука в реальном времени.",
"color_strip.effect.reactive.source": "Источник звука:",
"color_strip.effect.reactive.mode": "Модуляция:",
"color_strip.effect.reactive.mode.brightness": "Яркость",
"color_strip.effect.reactive.mode.saturation": "Насыщенность",
"color_strip.effect.reactive.mode.both": "Обе",
"color_strip.effect.reactive.intensity": "Сила:",
"color_strip.effect.mirror.hint": "Режим отскока — метеор меняет направление у краёв ленты вместо переноса.",
"color_strip.effect.noise": "Шум",
"color_strip.effect.noise.desc": "Прокручиваемый фрактальный шум, отображённый на палитру",
"color_strip.effect.palette": "Палитра:",
"color_strip.effect.palette.hint": "Цветовая палитра для отображения значений эффекта в RGB-цвета.",
"color_strip.effect.plasma": "Плазма",
"color_strip.effect.plasma.desc": "Наложение синусоидальных волн с палитрой — классический демо-эффект",
"color_strip.effect.scale": "Масштаб:",
"color_strip.effect.scale.hint": "Пространственный масштаб — частота волн (плазма), уровень масштабирования (шум) или ширина полос (аврора).",
"color_strip.effect.speed": "Скорость:",
"color_strip.effect.speed.hint": "Множитель скорости анимации эффекта (0.1 = очень медленно, 10.0 = очень быстро).",
"color_strip.effect.type": "Тип эффекта:",
"color_strip.effect.type.hint": "Выберите процедурный алгоритм.",
"color_strip.error.clone_failed": "Не удалось клонировать источник цветовой полосы",
"color_strip.error.delete_failed": "Не удалось удалить источник цветовой полосы",
"color_strip.error.editor_open_failed": "Не удалось открыть редактор цветовой полосы",
"color_strip.error.name_required": "Введите название",
"color_strip.fps": "Целевой FPS:",
"color_strip.fps.hint": "Целевая частота кадров для обновления цветов светодиодов (10-90)",
"color_strip.frame_interpolation": "Интерполяция кадров:",
"color_strip.frame_interpolation.hint": "Смешивает последовательные захваченные кадры для вывода на полной целевой частоте кадров, даже если скорость захвата ниже. Уменьшает заметные ступеньки при плавных переходах.",
"color_strip.game_event.error.no_integration": "Выберите игровую интеграцию.",
"color_strip.game_event.event_mappings": "Привязка событий:",
"color_strip.game_event.event_mappings.hint": "Переопределите или добавьте привязки событий к эффектам для этого источника.",
"color_strip.game_event.idle_color": "Цвет простоя:",
"color_strip.game_event.idle_color.hint": "Цвет LED, когда нет активных игровых событий.",
"color_strip.game_event.integration": "Игровая интеграция:",
"color_strip.game_event.integration.hint": "Выберите игровую интеграцию, от которой поступают события.",
"color_strip.gamma": "Гамма:",
"color_strip.gamma.hint": "Гамма-коррекция (1=без коррекции, \u003c1=ярче средние тона, \u003e1=темнее средние тона)",
"color_strip.gradient.add_stop": "+ Добавить",
"color_strip.gradient.bidir.hint": "Добавить второй цвет справа от этой остановки для создания резкого перехода в градиенте.",
"color_strip.gradient.min_stops": "Палитра должна содержать не менее 2 остановок",
"color_strip.gradient.position": "Позиция (0.01.0)",
"color_strip.gradient.preset": "Пресет:",
"color_strip.gradient.preset.apply": "Применить",
"color_strip.gradient.preset.aurora": "Аврора",
"color_strip.gradient.preset.cool": "Холодный",
"color_strip.gradient.preset.custom": "— Свой —",
"color_strip.gradient.preset.deleted": "Пресет удалён",
"color_strip.gradient.preset.fire": "Огонь",
"color_strip.gradient.preset.forest": "Лес",
"color_strip.gradient.preset.hint": "Загрузить готовую палитру градиента. Выбор пресета заменяет текущие остановки.",
"color_strip.gradient.preset.ice": "Лёд",
"color_strip.gradient.preset.lava": "Лава",
"color_strip.gradient.preset.neon": "Неон",
"color_strip.gradient.preset.ocean": "Океан",
"color_strip.gradient.preset.pastel": "Пастельный",
"color_strip.gradient.preset.rainbow": "Радуга",
"color_strip.gradient.preset.save_button": "Сохранить как пресет…",
"color_strip.gradient.preset.save_prompt": "Введите название пресета:",
"color_strip.gradient.preset.saved": "Пресет сохранён",
"color_strip.gradient.preset.sunset": "Закат",
"color_strip.gradient.preset.warm": "Тёплый",
"color_strip.gradient.preview": "Градиент:",
"color_strip.gradient.preview.hint": "Предпросмотр градиента. Нажмите на дорожку маркеров чтобы добавить остановку. Перетащите маркеры для изменения позиции.",
"color_strip.gradient.harmony": "Цветовая гармония:",
"color_strip.gradient.harmony.hint": "Выберите базовый цвет, затем создайте гармоничный набор точек на основе классических цветовых сочетаний.",
"color_strip.gradient.harmony.base": "Базовый цвет",
"color_strip.gradient.harmony.complementary": "Контрастная",
"color_strip.gradient.harmony.analogous": "Аналоговая",
"color_strip.gradient.harmony.triadic": "Триада",
"color_strip.gradient.harmony.split_complementary": "Разделённая",
"color_strip.gradient.harmony.tetradic": "Тетрада",
"color_strip.gradient.harmony.monochromatic": "Моно",
"color_strip.gradient.stops": "Цветовые остановки:",
"color_strip.gradient.stops.hint": "Каждая остановка задаёт цвет в относительной позиции (0.0 = начало, 1.0 = конец). Кнопка ↔ добавляет цвет справа для создания резкого перехода.",
"color_strip.gradient.stops_count": "остановок",
"color_strip.interpolation": "Режим цвета:",
"color_strip.interpolation.average": "Среднее",
"color_strip.interpolation.average.desc": "Смешивает все пиксели в усреднённый цвет",
"color_strip.interpolation.dominant": "Доминирующий",
"color_strip.interpolation.dominant.desc": "Использует самый частый цвет в выборке",
"color_strip.interpolation.hint": "Как вычислять цвет светодиода по пикселям рамки",
"color_strip.interpolation.median": "Медиана",
"color_strip.interpolation.median.desc": "Берёт средний цвет, игнорируя выбросы",
"color_strip.led_count": "Количество LED:",
"color_strip.led_count.hint": "Общее число светодиодов на физической полосе. Для источников экрана: 0 = автоматически из калибровки (светодиоды за ТВ будут чёрными). Для статического цвета: укажите точное количество светодиодов устройства.",
"color_strip.leds": "Количество светодиодов",
"color_strip.mapped.add_zone": "+ Добавить зону",
"color_strip.mapped.error.no_source": "Для каждой зоны должен быть выбран источник",
"color_strip.mapped.select_source": "Поиск источников...",
"color_strip.mapped.zone_end": "Конец LED",
"color_strip.mapped.zone_reverse": "Реверс",
"color_strip.mapped.zone_source": "Источник",
"color_strip.mapped.zone_start": "Начало LED",
"color_strip.mapped.zones": "Зоны:",
"color_strip.mapped.zones.hint": "Каждая зона привязывает источник цветовой полосы к определённому диапазону LED. Зоны размещаются рядом — промежутки остаются чёрными.",
"color_strip.mapped.zones_count": "зон",
"color_strip.math_wave.add_wave": "+ Добавить волну",
"color_strip.math_wave.amplitude": "Амплитуда",
"color_strip.math_wave.error.no_waves": "Добавьте хотя бы один слой волны.",
"color_strip.math_wave.frequency": "Частота",
"color_strip.math_wave.gradient": "Цветовой градиент:",
"color_strip.math_wave.gradient.hint": "Градиент для окраски волнового выхода. Значения волны отображаются на позиции вдоль этого градиента.",
"color_strip.math_wave.offset": "Смещение",
"color_strip.math_wave.phase": "Фаза",
"color_strip.math_wave.speed": "Скорость:",
"color_strip.math_wave.speed.hint": "Множитель скорости анимации. Более высокие значения ускоряют движение волны.",
"color_strip.math_wave.waveform": "Форма волны",
"color_strip.math_wave.waveform.sawtooth": "Пилообразная",
"color_strip.math_wave.waveform.sine": "Синусоида",
"color_strip.math_wave.waveform.square": "Прямоугольная",
"color_strip.math_wave.waveform.triangle": "Треугольная",
"color_strip.math_wave.waves": "Слои волн:",
"color_strip.math_wave.waves.hint": "Добавьте несколько слоёв волн, которые комбинируются вместе. Каждая волна имеет собственную форму, частоту, амплитуду, фазу и смещение.",
"color_strip.name": "Название:",
"color_strip.name.placeholder": "Настенная полоса",
"color_strip.notification.app_colors": "Цвета приложений",
"color_strip.notification.app_colors.add": "+ Добавить",
"color_strip.notification.app_colors.hint": "Индивидуальные цвета для приложений. Каждая строка связывает имя приложения с цветом уведомления.",
"color_strip.notification.app_colors.label": "Назначения цветов:",
"color_strip.notification.app_count": "прилож.",
"color_strip.notification.app_overrides": "Настройки приложений",
"color_strip.notification.app_overrides.add": "+ Добавить",
"color_strip.notification.app_overrides.app_placeholder": "Имя приложения",
"color_strip.notification.app_overrides.hint": "Индивидуальные настройки цвета и звука для каждого приложения.",
"color_strip.notification.app_overrides.label": "Переопределения:",
"color_strip.notification.default_color": "Цвет по умолчанию:",
"color_strip.notification.default_color.hint": "Цвет, когда для приложения нет специфического назначения цвета.",
"color_strip.notification.duration": "Длительность (мс):",
"color_strip.notification.duration.hint": "Как долго длится эффект уведомления в миллисекундах.",
"color_strip.notification.effect": "Эффект:",
"color_strip.notification.effect.flash": "Вспышка",
"color_strip.notification.effect.flash.desc": "Мгновенное включение, линейное затухание",
"color_strip.notification.effect.hint": "Визуальный эффект при уведомлении. Вспышка — линейное затухание, Пульс — плавная волна, Волна — заполнение и затухание.",
"color_strip.notification.effect.pulse": "Пульс",
"color_strip.notification.effect.pulse.desc": "Плавное свечение колоколом",
"color_strip.notification.effect.sweep": "Волна",
"color_strip.notification.effect.sweep.desc": "Заполняет слева направо, затем гаснет",
"color_strip.notification.endpoint": "Вебхук:",
"color_strip.notification.endpoint.hint": "URL для запуска уведомлений из внешних систем. POST с JSON телом: {\"app\": \"AppName\", \"color\": \"#FF0000\"}.",
"color_strip.notification.filter_list": "Список приложений:",
"color_strip.notification.filter_list.hint": "Одно имя приложения на строку. Используйте «Обзор» для выбора из запущенных процессов.",
"color_strip.notification.filter_list.placeholder": "Discord\nSlack\nTelegram",
"color_strip.notification.filter_mode": "Фильтр приложений:",
"color_strip.notification.filter_mode.blacklist": "Чёрный список",
"color_strip.notification.filter_mode.blacklist.desc": "Все кроме указанных приложений",
"color_strip.notification.filter_mode.hint": "Фильтр уведомлений по имени приложения. Выкл = все, Белый список = только указанные, Чёрный список = все кроме указанных.",
"color_strip.notification.filter_mode.off": "Выкл",
"color_strip.notification.filter_mode.off.desc": "Принимать все уведомления",
"color_strip.notification.filter_mode.whitelist": "Белый список",
"color_strip.notification.filter_mode.whitelist.desc": "Только указанные приложения",
"color_strip.notification.history.empty": "Уведомления ещё не захвачены",
"color_strip.notification.history.error": "Не удалось загрузить историю уведомлений",
"color_strip.notification.history.filtered": "Потоков отфильтровано",
"color_strip.notification.history.fired": "Потоков запущено",
"color_strip.notification.history.hint": "Последние ОС-уведомления, захваченные слушателем (новейшие сверху). До 50 записей.",
"color_strip.notification.history.refresh": "Обновить",
"color_strip.notification.history.title": "История уведомлений",
"color_strip.notification.history.unavailable": "Слушатель уведомлений ОС недоступен на этой платформе",
"color_strip.notification.history.unknown_app": "Неизвестное приложение",
"color_strip.notification.os_listener": "Слушать системные уведомления:",
"color_strip.notification.os_listener.hint": "Когда включено, источник автоматически срабатывает при появлении уведомления рабочего стола (Windows toast / Linux D-Bus). Требует разрешения на доступ к уведомлениям.",
"color_strip.notification.save_first": "Сначала сохраните источник, чтобы увидеть URL вебхука.",
"color_strip.notification.search_apps": "Поиск приложений…",
"color_strip.notification.sound": "Звук",
"color_strip.notification.sound.app_name_placeholder": "Имя приложения",
"color_strip.notification.sound.app_sounds": "Звуки приложений:",
"color_strip.notification.sound.app_sounds.add": "+ Добавить",
"color_strip.notification.sound.app_sounds.hint": "Переопределение звука и громкости для конкретных приложений. Пустой звук = отключить для этого приложения.",
"color_strip.notification.sound.asset": "Звуковой ассет:",
"color_strip.notification.sound.asset.hint": "Выберите звуковой ассет для воспроизведения при уведомлении. Оставьте пустым для тишины.",
"color_strip.notification.sound.none": "Нет (без звука)",
"color_strip.notification.sound.search": "Поиск звуков…",
"color_strip.notification.sound.volume": "Громкость:",
"color_strip.notification.sound.volume.hint": "Общая громкость звуков уведомлений (0–100%).",
"color_strip.notification.test": "Тестовое уведомление",
"color_strip.notification.test.error": "Не удалось отправить уведомление",
"color_strip.notification.test.no_streams": "Нет запущенных потоков для этого источника",
"color_strip.notification.test.ok": "Уведомление отправлено",
"color_strip.palette.aurora": "Аврора",
"color_strip.palette.fire": "Огонь",
"color_strip.palette.forest": "Лес",
"color_strip.palette.ice": "Лёд",
"color_strip.palette.lava": "Лава",
"color_strip.palette.ocean": "Океан",
"color_strip.palette.rainbow": "Радуга",
"color_strip.palette.sunset": "Закат",
"color_strip.picture_source": "Источник изображения:",
"color_strip.picture_source.hint": "Источник захвата экрана для расчёта цветов светодиодов",
"color_strip.preview.connected": "Подключено",
"color_strip.preview.connecting": "Подключение...",
"color_strip.preview.not_connected": "Не подключено",
"color_strip.preview.save_first": "Сначала сохраните источник — для предпросмотра нужна калибровка",
"color_strip.preview.title": "Предпросмотр",
"color_strip.preview.unsupported": "Предпросмотр недоступен для этого типа источника",
"color_strip.processed.error.no_input": "Выберите входной источник",
"color_strip.processed.input": "Источник:",
"color_strip.processed.input.hint": "Источник цветовой полосы, вывод которого будет обработан",
"color_strip.processed.template": "Шаблон обработки:",
"color_strip.processed.template.hint": "Цепочка фильтров для применения к выводу входного источника",
"color_strip.saturation": "Насыщенность:",
"color_strip.saturation.hint": "Насыщенность цвета (0=оттенки серого, 1=без изменений, 2=двойная насыщенность)",
"color_strip.select_type": "Выберите тип цветовой полосы",
"color_strip.single_color": "Цвет:",
"color_strip.single_color.hint": "Один сплошной цвет, который будет отправлен на все светодиоды полосы.",
"color_strip.smoothing": "Сглаживание:",
"color_strip.smoothing.hint": "Временное смешивание кадров (0=без смешивания, 1=полное). Уменьшает мерцание.",
"color_strip.test.apply": "Применить",
"color_strip.test.composite": "Композит",
"color_strip.test.connecting": "Подключение...",
"color_strip.test.error": "Не удалось подключиться к потоку предпросмотра",
"color_strip.test.fps": "FPS:",
"color_strip.test.led_count": "Кол-во LED:",
"color_strip.test.receive_fps": "Частота приёма",
"color_strip.test.title": "Предпросмотр",
"color_strip.test_device": "Тестировать на устройстве:",
"color_strip.test_device.hint": "Выберите устройство для отправки тестовых пикселей при нажатии на рамку",
"color_strip.type": "Тип:",
"color_strip.type.api_input": "API-ввод",
"color_strip.type.api_input.desc": "Приём цветов от внешних приложений",
"color_strip.type.api_input.hint": "Принимает массивы цветов LED от внешних клиентов через REST POST или WebSocket. Используйте для интеграции с собственным ПО, домашней автоматизацией или любой системой, способной отправлять HTTP-запросы.",
"color_strip.type.audio": "Аудиореактив",
"color_strip.type.audio.desc": "LED от аудиосигнала",
"color_strip.type.audio.hint": "Цвета LED управляются аудиосигналом в реальном времени — системный звук или микрофон.",
"color_strip.type.candlelight": "Свечи",
"color_strip.type.candlelight.desc": "Реалистичная имитация мерцания свечей",
"color_strip.type.candlelight.hint": "Реалистичное мерцание свечей с тёплыми тонами и органическими паттернами.",
"color_strip.type.composite": "Композит",
"color_strip.type.composite.desc": "Наложение и смешивание источников",
"color_strip.type.composite.hint": "Наложение нескольких источников цветовой ленты как слоёв с режимами смешивания и прозрачностью.",
"color_strip.type.daylight": "Дневной цикл",
"color_strip.type.daylight.desc": "Имитация естественного дневного света за 24 часа",
"color_strip.type.daylight.hint": "Имитирует цветовую температуру солнца в течение суток — от тёплого рассвета до прохладного дневного света, заката и ночи.",
"color_strip.type.effect": "Эффект",
"color_strip.type.effect.desc": "Процедурные эффекты: огонь, плазма, аврора",
"color_strip.type.effect.hint": "Процедурные LED-эффекты (огонь, метеор, плазма, шум, аврора), генерируемые в реальном времени.",
"color_strip.type.game_event": "Игровое событие",
"color_strip.type.game_event.desc": "LED-эффекты по игровым событиям",
"color_strip.type.gradient": "Градиент",
"color_strip.type.gradient.desc": "Плавный переход цветов по ленте",
"color_strip.type.hint": "Источник изображения получает цвета светодиодов из захвата экрана. Один цвет заполняет все светодиоды одним постоянным цветом. Градиент распределяет цветовой градиент по всем светодиодам. Смена цвета плавно циклически переключается между заданными цветами. Композит накладывает несколько источников как смешанные слои. Аудиореактив управляет LED от аудиосигнала в реальном времени. API-ввод принимает массивы цветов LED от внешних клиентов через REST или WebSocket.",
"color_strip.type.mapped": "Маппинг",
"color_strip.type.mapped.desc": "Назначение источников на зоны LED",
"color_strip.type.mapped.hint": "Назначает разные источники цветовой полосы на разные диапазоны LED (зоны). В отличие от композита, маппинг размещает источники рядом друг с другом.",
"color_strip.type.math_wave": "Математическая волна",
"color_strip.type.math_wave.desc": "Генератор математических волн с цветовым градиентом",
"color_strip.type.notification": "Уведомления",
"color_strip.type.notification.desc": "Разовый эффект по вебхуку",
"color_strip.type.notification.hint": "Вспышка, пульс или волна при срабатывании через вебхук. Предназначен для использования как слой в композитном источнике.",
"color_strip.type.picture": "Источник изображения",
"color_strip.type.picture.desc": "Цвета из захвата экрана",
"color_strip.type.picture_advanced": "Мультимонитор",
"color_strip.type.picture_advanced.desc": "Калибровка линиями по нескольким мониторам",
"color_strip.type.processed": "Обработанный",
"color_strip.type.processed.desc": "Применить шаблон обработки к другому источнику",
"color_strip.type.processed.hint": "Оборачивает существующий источник цветовой полосы и пропускает его вывод через цепочку фильтров.",
"color_strip.type.single_color": "Один цвет",
"color_strip.type.single_color.desc": "Заливка одним цветом",
"color_strip.type.weather": "Погода",
"color_strip.type.weather.desc": "Погодно-реактивные амбиентные цвета",
"color_strip.type.weather.hint": "Отображает текущие погодные условия в амбиентные цвета LED. Требуется сущность Источник погоды.",
"color_strip.updated": "Источник цветовой полосы обновлён",
"color_strip.weather.error.no_source": "Выберите источник погоды",
"color_strip.weather.source": "Источник погоды:",
"color_strip.weather.source.hint": "Источник метеоданных. Сначала создайте его во вкладке Погода.",
"color_strip.weather.speed": "Скорость анимации:",
"color_strip.weather.speed.hint": "Скорость дрейфа цветов. Выше = быстрее.",
"color_strip.weather.temperature_influence": "Влияние температуры:",
"color_strip.weather.temperature_influence.hint": "Насколько температура смещает палитру в тёплую/холодную сторону. 0 = чистые цвета условий, 1 = сильное смещение.",
"common.apply": "Применить",
"common.back": "Назад",
"common.cancel": "Отмена",
"common.card_color": "Цвет карточки",
"common.clone": "Клонировать",
"common.daylight_tz.detected": "Определён браузером",
"common.daylight_tz.detected_label": "Авто-определение",
"common.daylight_tz.region.africa": "Африка",
"common.daylight_tz.region.americas": "Америка",
"common.daylight_tz.region.asia": "Азия",
"common.daylight_tz.region.europe": "Европа",
"common.daylight_tz.region.me": "Ближний Восток",
"common.daylight_tz.region.pacific": "Тихий океан",
"common.daylight_tz.region.utc": "Универсальное",
"common.daylight_tz.search": "Поиск по поясам, городам, регионам…",
"common.daylight_tz.system": "Системный по умолчанию",
"common.daylight_tz.system_desc": "Часы сервера — без переопределения",
"common.delete": "Удалить",
"common.edit": "Редактировать",
"common.hide": "Скрыть карточку",
"common.led_preview": "Превью LED",
"common.loading": "Загрузка...",
"common.more_actions": "Ещё действия",
"common.none": "Нет",
"common.none_no_cspt": "Нет (без шаблона обработки)",
"common.none_no_input": "Нет (без источника)",
"common.none_own_speed": "Нет (своя скорость)",
"common.remove": "Убрать",
"common.start": "ПУСК",
"common.stop": "СТОП",
"common.undo": "Отменить",
"confirm.no": "Нет",
"confirm.stop_all": "Остановить все запущенные цели?",
"confirm.title": "Подтверждение",
"confirm.turn_off_device": "Выключить это устройство?",
"confirm.turn_off_ha_light": "Выключить все привязанные лампы?",
"confirm.yes": "Да",
"css_processing.add": "Добавить Шаблон Обработки Полос",
"css_processing.created": "Шаблон обработки полос создан",
"css_processing.delete.confirm": "Вы уверены, что хотите удалить этот шаблон обработки полос?",
"css_processing.deleted": "Шаблон обработки полос удалён",
"css_processing.description_label": "Описание (необязательно):",
"css_processing.description_placeholder": "Опишите этот шаблон...",
"css_processing.edit": "Редактировать Шаблон Обработки Полос",
"css_processing.error.clone_failed": "Не удалось клонировать шаблон обработки полос",
"css_processing.error.delete": "Ошибка удаления шаблона обработки полос",
"css_processing.error.load": "Ошибка загрузки шаблона обработки полос",
"css_processing.error.required": "Заполните все обязательные поля",
"css_processing.name": "Имя Шаблона:",
"css_processing.name_placeholder": "Мой Шаблон Обработки Полос",
"css_processing.title": "Шаблоны Обработки Полос",
"css_processing.updated": "Шаблон обработки полос обновлён",
"dashboard.customize.anim": "Анимации",
"dashboard.customize.anim.full": "Полные",
"dashboard.customize.anim.off": "Выкл",
"dashboard.customize.anim.reduced": "Снижены",
"dashboard.customize.cell_drag_help": "Перетащите строку, чтобы изменить порядок ячеек в полосе производительности.",
"dashboard.customize.collapse_default.off": "Развёрнуто по умолчанию",
"dashboard.customize.collapse_default.on": "Свёрнуто по умолчанию",
"dashboard.customize.density.comfortable": "Просторно",
"dashboard.customize.density.compact": "Компактно",
"dashboard.customize.density.dense": "Плотно",
"dashboard.customize.drag_help": "Перетащите строки или используйте ↑/↓.",
"dashboard.customize.export": "Экспорт",
"dashboard.customize.exported": "Настройки экспортированы",
"dashboard.customize.fixed_top": "Закреплено сверху",
"dashboard.customize.global": "Общие",
"dashboard.customize.hide": "Скрыть",
"dashboard.customize.import": "Импорт",
"dashboard.customize.import_failed": "Не удалось импортировать настройки",
"dashboard.customize.imported": "Настройки импортированы",
"dashboard.customize.mode.app": "Прил",
"dashboard.customize.mode.both": "Оба",
"dashboard.customize.mode.inherit": "Наслед.",
"dashboard.customize.mode.system": "Сис",
"dashboard.customize.mode_short": "РЕЖ",
"dashboard.customize.modified": "Изменено",
"dashboard.customize.perf_cells": "Системный мониторинг",
"dashboard.customize.perf_mode": "Режим перф.",
"dashboard.customize.preset.diagnostics": "Диагностика",
"dashboard.customize.preset.operator": "Оператор",
"dashboard.customize.preset.showrunner": "Шоу",
"dashboard.customize.preset.studio": "Студия",
"dashboard.customize.preset.tv": "ТВ",
"dashboard.customize.presets": "Пресеты",
"dashboard.customize.reset": "Сбросить",
"dashboard.customize.reset_confirm": "Сбросить настройки панели к пресету «Студия»?",
"dashboard.customize.scale": "Шкала Y",
"dashboard.customize.scale_short": "ШКЛ",
"dashboard.customize.sections": "Секции",
"dashboard.customize.show": "Показать",
"dashboard.customize.title": "Настройка панели",
"dashboard.customize.width": "Ширина",
"dashboard.customize.width.centered": "По центру",
"dashboard.customize.width.full": "Полная",
"dashboard.customize.width.narrow": "Узкая",
"dashboard.customize.window": "Окно выборки",
"dashboard.customize.window_short": "ОКН",
"dashboard.customize.yscale.auto": "Авто",
"dashboard.customize.yscale.fixed": "Фикс.",
"dashboard.customize.yscale.log": "Лог.",
"dashboard.device": "Устройство",
"dashboard.device.chip": "Чип:",
"dashboard.error.automation_toggle_failed": "Не удалось переключить автоматизацию",
"dashboard.error.start_failed": "Не удалось запустить обработку",
"dashboard.error.stop_all": "Не удалось остановить все цели",
"dashboard.error.stop_failed": "Не удалось остановить обработку",
"dashboard.errors": "Ошибки",
"dashboard.failed": "Не удалось загрузить обзор",
"dashboard.fps": "FPS",
"dashboard.no_targets": "Нет настроенных целей",
"dashboard.perf.active_patches": "Активные каналы",
"dashboard.perf.color": "Цвет графика",
"dashboard.perf.cpu": "ЦП",
"dashboard.perf.device_latency": "Задержка устройств",
"dashboard.perf.devices": "Устройства",
"dashboard.perf.errors": "Ошибки",
"dashboard.perf.gpu": "ГП",
"dashboard.perf.mode.app": "Приложение",
"dashboard.perf.mode.both": "Оба",
"dashboard.perf.mode.system": "Система",
"dashboard.perf.network": "Сеть",
"dashboard.perf.patches.empty.idle": "Готов к запуску",
"dashboard.perf.patches.empty.none": "Каналов пока нет",
"dashboard.perf.ram": "ОЗУ",
"dashboard.perf.send_timing": "Время отправки",
"dashboard.perf.temp": "Температура",
"dashboard.perf.temp.install_lhm": "В Windows нет встроенного API для температуры CPU. Установите LibreHardwareMonitor и включите «Publish to WMI», чтобы видеть живые показания.",
"dashboard.perf.total_capture_fps": "Общий FPS источников",
"dashboard.perf.total_capture_fps_actual": "Общий FPS захвата",
"dashboard.perf.total_fps": "Общий FPS",
"dashboard.perf.unavailable": "недоступно",
"dashboard.poll_interval": "Интервал обновления",
"dashboard.recent_activity.view_all": "Посмотреть все",
"dashboard.section.automations": "Автоматизации",
"dashboard.section.performance": "Производительность системы",
"dashboard.section.playlists": "Плейлисты",
"dashboard.section.recent_activity": "Последняя активность",
"dashboard.section.running": "Запущенные",
"dashboard.section.scenes": "Пресеты сцен",
"dashboard.section.stopped": "Остановленные",
"dashboard.section.sync_clocks": "Синхронные часы",
"dashboard.section.targets": "Каналы",
"dashboard.stop_all": "Остановить все",
"dashboard.targets": "Цели",
"dashboard.title": "Обзор",
"dashboard.type.kc": "Цвета клавиш",
"dashboard.type.led": "LED",
"dashboard.uptime": "Время работы",
"demo.badge": "ДЕМО",
"demo.banner": "Вы в демо-режиме — все устройства и данные виртуальные. Реальное оборудование не используется.",
"device.added": "Устройство успешно добавлено",
"device.baud_rate": "Скорость порта:",
"device.baud_rate.hint": "Скорость серийного соединения. Выше = больше FPS, но требует соответствия скетчу Arduino.",
"device.ble.family": "Протокол:",
"device.ble.family.govee.desc": "Ленты Govee H6xxx — только без AES-шифрования",
"device.ble.family.hint": "Какой BLE-протокол использует контроллер. Выбирайте по названию приложения, которым обычно управляете.",
"device.ble.family.sp110e.desc": "Адресуемые контроллеры — приложение LED Hue / SP110E",
"device.ble.family.triones.desc": "Одноцветные контроллеры — HappyLighting / LEDnet",
"device.ble.family.zengge.desc": "Одноцветные контроллеры — iLightsIn / Mohuan",
"device.ble.govee_key": "Ключ AES Govee (hex):",
"device.ble.govee_key.hint": "Необязательно. Новая прошивка Govee требует AES-ключ под конкретную модель — оставьте пустым для старой прошивки.",
"device.ble.govee_key.placeholder": "32 символа hex, напр. 0102…1f20",
"device.ble.url": "BLE адрес:",
"device.ble.url.hint": "MAC-адрес (Windows/Linux) или UUID (macOS) с префиксом ble://",
"device.brightness": "Яркость",
"device.button.add": "Добавить Устройство",
"device.button.calibrate": "Калибровка",
"device.button.capture_settings": "Настройки захвата",
"device.button.ping": "Пинг устройства",
"device.button.power_off": "Выключить",
"device.button.remove": "Удалить",
"device.button.settings": "Основные настройки",
"device.button.start": "Запустить",
"device.button.stop": "Остановить",
"device.button.stream_selector": "Настройки источника",
"device.button.webui": "Открыть веб-интерфейс устройства",
"device.chroma.device_type": "Peripheral Type:",
"device.chroma.device_type.hint": "Which Razer peripheral to control via Chroma SDK",
"device.css_processing_template": "Шаблон Обработки Полос:",
"device.css_processing_template.hint": "Шаблон обработки по умолчанию, применяемый ко всем цветовым полосам на этом устройстве",
"device.ddp.color_order.bgr.desc": "BGR byte order",
"device.ddp.color_order.brg.desc": "BRG byte order",
"device.ddp.color_order.gbr.desc": "GBR byte order",
"device.ddp.color_order.grb.desc": "WS2812/WS2812B native order",
"device.ddp.color_order.rbg.desc": "RBG byte order",
"device.ddp.color_order.rgb.desc": "Standard RGB byte order",
"device.ddp.url": "IP-адрес:",
"device.ddp.url.hint": "Адрес DDP-приёмника. Порт по умолчанию — 4048.",
"device.ddp.url.placeholder": "192.168.1.50",
"device.ddp_color_order": "Порядок цветов:",
"device.ddp_color_order.hint": "Порядок байт каналов на линии. Большинство DDP-приёмников ожидают RGB.",
"device.ddp_destination_id": "ID назначения:",
"device.ddp_destination_id.hint": "Идентификатор назначения DDP (1 = дисплей).",
"device.ddp_port": "Порт DDP:",
"device.ddp_port.hint": "UDP-порт (0 = протокольный по умолчанию 4048).",
"device.display": "Дисплей:",
"device.dmx.url": "IP адрес:",
"device.dmx.url.hint": "IP адрес DMX-узла (напр. 192.168.1.50)",
"device.dmx.url.placeholder": "192.168.1.50",
"device.dmx_protocol": "Протокол DMX:",
"device.dmx_protocol.artnet.desc": "UDP unicast, порт 6454",
"device.dmx_protocol.hint": "Art-Net использует UDP порт 6454, sACN (E1.31) — UDP порт 5568",
"device.dmx_protocol.sacn.desc": "Multicast/unicast, порт 5568",
"device.dmx_start_channel": "Начальный канал:",
"device.dmx_start_channel.hint": "Первый DMX-канал в юниверсе (1-512)",
"device.dmx_start_universe": "Начальный Universe:",
"device.dmx_start_universe.hint": "Первый DMX-юниверс (0-32767). Дополнительные юниверсы используются автоматически при \u003e170 светодиодах.",
"device.error.brightness": "Не удалось обновить яркость",
"device.error.clone_failed": "Не удалось клонировать устройство",
"device.error.load_failed": "Не удалось загрузить устройство",
"device.error.power_off_failed": "Не удалось выключить устройство",
"device.error.remove_failed": "Не удалось удалить устройство",
"device.error.required": "Пожалуйста, заполните все поля",
"device.error.save": "Не удалось сохранить настройки",
"device.error.settings_load_failed": "Не удалось загрузить настройки устройства",
"device.error.update": "Не удалось обновить устройство",
"device.espnow.channel": "WiFi Channel:",
"device.espnow.channel.hint": "WiFi channel (1-14). Must match the receiver\u0027s channel.",
"device.espnow.peer_mac": "Peer MAC:",
"device.espnow.peer_mac.hint": "MAC address of the remote ESP32 receiver (e.g. AA:BB:CC:DD:EE:FF)",
"device.fps": "FPS:",
"device.gamesense.device_type": "Peripheral Type:",
"device.gamesense.device_type.hint": "Which SteelSeries peripheral to control via GameSense",
"device.gamesense.peripheral.headset": "Headset",
"device.gamesense.peripheral.headset.desc": "Headset earcup lighting",
"device.gamesense.peripheral.indicator": "Indicator",
"device.gamesense.peripheral.indicator.desc": "OLED/LED status indicator",
"device.gamesense.peripheral.keyboard": "Keyboard",
"device.gamesense.peripheral.keyboard.desc": "Per-key RGB illumination",
"device.gamesense.peripheral.mouse": "Mouse",
"device.gamesense.peripheral.mouse.desc": "Mouse RGB zones",
"device.gamesense.peripheral.mousepad": "Mousepad",
"device.gamesense.peripheral.mousepad.desc": "Mousepad edge lighting zones",
"device.govee.url": "IP-адрес:",
"device.govee.url.hint": "IP-адрес устройства Govee в локальной сети. Сначала включите LAN Control в приложении Govee Home (Устройство → ⚙ → LAN Control), иначе лампа не ответит.",
"device.govee.url.placeholder": "192.168.1.50",
"device.govee_min_interval": "Мин. интервал обновления:",
"device.govee_min_interval.hint": "Локальный лимит частоты команд (мс). UDP fire-and-forget справляется с быстрыми обновлениями; по умолчанию 50 мс ≈ 20 Гц.",
"device.group.add_child": "+ Добавить устройство",
"device.group.children": "Дочерние устройства:",
"device.group.children.hint": "Выберите устройства для группы. Порядок важен в режиме последовательности.",
"device.group.error.no_children": "Добавьте хотя бы одно устройство в группу.",
"device.group.mode": "Режим группы:",
"device.group.mode.hint": "Последовательный — LEDs соединяются друг за другом. Независимый — полная лента отражается на каждое устройство.",
"device.group.mode.independent": "Независимый",
"device.group.mode.independent.desc": "Дублировать полосу на каждое устройство отдельно",
"device.group.mode.sequence": "Последовательный",
"device.group.mode.sequence.desc": "Объединить светодиоды в одну длинную полосу",
"device.group.move_down": "Вниз",
"device.group.move_up": "Вверх",
"device.group.select_device": "Выберите устройство",
"device.health.checking": "Проверка...",
"device.health.offline": "Недоступен",
"device.health.online": "Онлайн",
"device.health.streaming_unreachable": "Недоступен во время стриминга",
"device.hue.client_key": "Client Key:",
"device.hue.client_key.hint": "Entertainment API client key (hex string from pairing)",
"device.hue.group_id": "Entertainment Group:",
"device.hue.group_id.hint": "Entertainment configuration ID from your Hue bridge",
"device.hue.url": "Bridge IP:",
"device.hue.url.hint": "IP address of your Hue bridge",
"device.hue.username": "Bridge Username:",
"device.hue.username.hint": "Hue bridge application key from pairing",
"device.icon.add": "Добавить",
"device.icon.audio_file": "Аудиофайл",
"device.icon.bath": "Ванная",
"device.icon.battery": "Батарея",
"device.icon.bot": "Бот",
"device.icon.briefcase": "Портфель",
"device.icon.bulb_off": "Лампа выключена",
"device.icon.calendar": "Календарь",
"device.icon.camcorder": "Видеокамера",
"device.icon.candle": "Свеча",
"device.icon.cat.all": "Все",
"device.icon.cat.ambience": "Атмосфера",
"device.icon.cat.controls": "Управление",
"device.icon.cat.hardware": "Оборудование",
"device.icon.cat.lighting": "Освещение",
"device.icon.cat.media": "Медиа",
"device.icon.cat.nature": "Природа",
"device.icon.cat.office": "Офис",
"device.icon.cat.rooms": "Комнаты",
"device.icon.cat.signal": "Сигнал",
"device.icon.cat.status": "Состояние",
"device.icon.cat.weather": "Погода",
"device.icon.ceiling": "Потолочный светильник",
"device.icon.change": "Изменить иконку…",
"device.icon.check": "Галочка",
"device.icon.checklist": "Список",
"device.icon.choose": "Выбрать иконку…",
"device.icon.clock": "Часы",
"device.icon.code": "Код",
"device.icon.coffee": "Кофе",
"device.icon.color_toggle": "Цвет",
"device.icon.desk_lamp": "Настольная лампа",
"device.icon.dim": "Приглушённый свет",
"device.icon.disc": "Диск",
"device.icon.doc": "Документ",
"device.icon.empty": "Иконки не найдены.",
"device.icon.entity.asset": "Ассет",
"device.icon.entity.audio_processing_template": "Шаблон обработки аудио",
"device.icon.entity.audio_source": "Источник аудио",
"device.icon.entity.audio_template": "Аудиошаблон",
"device.icon.entity.automation": "Автоматизация",
"device.icon.entity.capture_template": "Шаблон захвата",
"device.icon.entity.color_strip_source": "Цветная полоска",
"device.icon.entity.cspt": "Шаблон обработки полоски",
"device.icon.entity.device": "Устройство",
"device.icon.entity.game_integration": "Игровая интеграция",
"device.icon.entity.gradient": "Палитра",
"device.icon.entity.ha_light_target": "HA-светильник",
"device.icon.entity.ha_source": "Источник Home Assistant",
"device.icon.entity.http_endpoint": "HTTP-эндпоинт",
"device.icon.entity.mqtt_source": "Источник MQTT",
"device.icon.entity.pattern_template": "Шаблон паттерна",
"device.icon.entity.picture_source": "Источник изображения",
"device.icon.entity.pp_template": "Шаблон постобработки",
"device.icon.entity.scene_playlist": "Плейлист",
"device.icon.entity.scene_preset": "Сцена",
"device.icon.entity.sync_clock": "Часы синхронизации",
"device.icon.entity.target": "LED-цель",
"device.icon.entity.value_source": "Источник значения",
"device.icon.entity.weather_source": "Источник погоды",
"device.icon.error.save_failed": "Не удалось сохранить иконку",
"device.icon.eyebrow": "Иконка карточки",
"device.icon.flashlight": "Фонарик",
"device.icon.flower": "Цветок",
"device.icon.fog": "Туман",
"device.icon.for": "для",
"device.icon.garage": "Гараж",
"device.icon.hashtag": "Хэштег",
"device.icon.help": "Справка",
"device.icon.hint": "↵ Применить · Esc Отмена",
"device.icon.image": "Изображение",
"device.icon.inherited_from": "Унаследовано от %s",
"device.icon.key": "Ключ",
"device.icon.kitchen": "Кухня",
"device.icon.laptop": "Ноутбук",
"device.icon.leaf": "Лист",
"device.icon.link": "Ссылка",
"device.icon.lock": "Замок",
"device.icon.mail": "Почта",
"device.icon.mcu": "Микроконтроллер",
"device.icon.mountain": "Гора",
"device.icon.off": "Отключено",
"device.icon.ok": "ОК",
"device.icon.outdoor": "Улица",
"device.icon.override_inherited": "Заменить унаследованную иконку…",
"device.icon.package": "Устройство",
"device.icon.phone": "Телефон",
"device.icon.point": "Точечный свет",
"device.icon.projector": "Проектор",
"device.icon.pulse": "Пульс",
"device.icon.rain": "Дождь",
"device.icon.recent": "Недавние",
"device.icon.refresh": "Обновить",
"device.icon.remove": "Удалить иконку",
"device.icon.ring": "Кольцевая лампа",
"device.icon.router": "Маршрутизатор",
"device.icon.saved": "Иконка сохранена",
"device.icon.search": "Поиск",
"device.icon.search.placeholder": "Поиск иконок…",
"device.icon.send": "Отправить",
"device.icon.server": "Сервер",
"device.icon.settings": "Настройки",
"device.icon.shield": "Щит",
"device.icon.show": "Показать",
"device.icon.slider": "Слайдер",
"device.icon.snow": "Снег",
"device.icon.snowflake": "Снежинка",
"device.icon.sprout": "Росток",
"device.icon.sunrise": "Восход",
"device.icon.sunset": "Закат",
"device.icon.switch": "Переключатель",
"device.icon.target": "Цель",
"device.icon.thunder": "Гроза",
"device.icon.title": "Выберите иконку",
"device.icon.tool": "Инструмент",
"device.icon.trash": "Корзина",
"device.icon.tree": "Дерево",
"device.icon.trend": "Тренд",
"device.icon.umbrella": "Зонт",
"device.icon.undo": "Отменить",
"device.icon.use_inherited": "Использовать унаследованную",
"device.icon.wall_light": "Настенный светильник",
"device.icon.warning": "Внимание",
"device.icon.watch": "Умные часы",
"device.icon.water_drops": "Капли воды",
"device.icon.waves": "Волны",
"device.icon.webcam": "Веб-камера",
"device.icon.wind": "Ветер",
"device.last_seen.days": "%d д назад",
"device.last_seen.hours": "%d ч назад",
"device.last_seen.just_now": "только что",
"device.last_seen.label": "Последний раз",
"device.last_seen.minutes": "%d мин назад",
"device.last_seen.seconds": "%d с назад",
"device.led_count": "Количество Светодиодов:",
"device.led_count.hint": "Количество светодиодов, настроенных в устройстве",
"device.led_count.hint.auto": "Автоматически определяется из устройства",
"device.led_count_manual.hint": "Количество светодиодов на ленте (должно совпадать с вашим скетчем Arduino)",
"device.led_type": "Тип LED:",
"device.led_type.hint": "RGB (3 канала) или RGBW (4 канала с выделенным белым)",
"device.lifx.url": "IP-адрес:",
"device.lifx.url.hint": "IP-адрес лампы LIFX в локальной сети. UDP-порт 56700 — по умолчанию.",
"device.lifx.url.placeholder": "192.168.1.50",
"device.lifx_min_interval": "Мин. интервал обновления:",
"device.lifx_min_interval.hint": "Локальный лимит частоты команд (мс). LIFX рекомендует ≤20 команд/сек; по умолчанию 50 мс соответствует этому потолку.",
"device.metrics.actual_fps": "Факт. FPS",
"device.metrics.current_fps": "Текущ. FPS",
"device.metrics.device_fps": "Частота обновления устройства",
"device.metrics.errors": "Ошибки",
"device.metrics.frames": "Кадры",
"device.metrics.frames_skipped": "Пропущено",
"device.metrics.keepalive": "Keepalive",
"device.metrics.potential_fps": "Потенц. FPS",
"device.metrics.target_fps": "Целев. FPS",
"device.metrics.timing": "Тайминг пайплайна:",
"device.metrics.uptime": "Время работы",
"device.mqtt_source": "MQTT Брокер:",
"device.mqtt_source.hint": "К какому MQTT-брокеру публикует это устройство. Брокеры настраиваются в разделе Интеграции → Источники MQTT. Оставьте пустым, чтобы использовать первый доступный брокер.",
"device.mqtt_source.none": "— Первый доступный брокер",
"device.mqtt_topic": "MQTT Топик:",
"device.mqtt_topic.hint": "MQTT топик для публикации пиксельных данных (напр. mqtt://ledgrab/device/name)",
"device.mqtt_topic.placeholder": "mqtt://ledgrab/device/гостиная",
"device.name": "Имя Устройства:",
"device.name.placeholder": "ТВ в Гостиной",
"device.nanoleaf.pair.instructions": "Нажмите и удерживайте кнопку питания на контроллере Nanoleaf в течение 5 секунд, пока светодиоды не мигнут, затем нажмите «Начать». Контроллер откроет окно сопряжения на 30 секунд.",
"device.nanoleaf.pair_button": "Сопряжение",
"device.nanoleaf.paired": "Сопряжено",
"device.nanoleaf.token.label": "Токен авторизации:",
"device.nanoleaf.url": "IP-адрес:",
"device.nanoleaf.url.hint": "IP-адрес контроллера Nanoleaf в локальной сети. HTTP-порт 16021 зафиксирован в протоколе.",
"device.nanoleaf.url.placeholder": "192.168.1.50",
"device.nanoleaf_min_interval": "Мин. интервал обновления:",
"device.nanoleaf_min_interval.hint": "Локальный лимит частоты команд (мс). По умолчанию 100 мс ≈ 10 Гц; накладные расходы HTTP ограничивают практический максимум ~20 Гц.",
"device.nanoleaf_per_panel": "Потоковая передача по панелям:",
"device.nanoleaf_per_panel.hint": "Передавать цвет каждой панели отдельно через extControl UDP вместо одного усреднённого цвета. Требуется недавняя прошивка контроллера.",
"device.opc.url": "IP-адрес:",
"device.opc.url.hint": "Адрес приёмника OPC. TCP-порт по умолчанию 7890.",
"device.opc.url.placeholder": "192.168.1.50",
"device.opc_channel": "Канал:",
"device.opc_channel.hint": "Канал OPC (0 — широковещательная отправка на все каналы сервера, 1-255 — конкретный выход).",
"device.openrgb.added_multiple": "Добавлено {count} устройств",
"device.openrgb.mode": "Режим зон:",
"device.openrgb.mode.combined": "Объединённая лента",
"device.openrgb.mode.hint": "Объединённый — все зоны как одна непрерывная LED-лента. Раздельный — каждая зона независимо отображает полный эффект.",
"device.openrgb.mode.separate": "Независимые зоны",
"device.openrgb.url": "OpenRGB URL:",
"device.openrgb.url.hint": "Адрес сервера OpenRGB (напр. openrgb://localhost:6742/0)",
"device.openrgb.zone": "Зоны:",
"device.openrgb.zone.error": "Не удалось загрузить зоны",
"device.openrgb.zone.hint": "Выберите зоны LED для управления (оставьте все неотмеченными для всех зон)",
"device.openrgb.zone.loading": "Загрузка зон…",
"device.ping.error": "Ошибка пинга",
"device.ping.offline": "Устройство недоступно",
"device.ping.online": "Онлайн ({ms}мс)",
"device.power.off_success": "Устройство выключено",
"device.remove.confirm": "Вы уверены, что хотите удалить это устройство?",
"device.removed": "Устройство удалено",
"device.scan": "Автопоиск",
"device.scan.already_added": "Уже добавлено",
"device.scan.empty": "Устройства не найдены",
"device.scan.error": "Ошибка сканирования сети",
"device.scan.selected": "Устройство выбрано",
"device.select_type": "Выберите тип устройства",
"device.send_latency": "Задержка отправки (мс):",
"device.send_latency.hint": "Имитация сетевой/серийной задержки на кадр в миллисекундах",
"device.serial_port": "Серийный порт:",
"device.serial_port.hint": "Выберите COM порт устройства Adalight",
"device.serial_port.none": "Серийные порты не найдены",
"device.serial_port.select": "Выберите порт...",
"device.spi.led_type": "LED Chipset:",
"device.spi.led_type.hint": "Type of addressable LED strip connected to the GPIO/SPI pin",
"device.spi.led_type.sk6812.desc": "Samsung LED, 800 KHz, 3-wire RGB",
"device.spi.led_type.sk6812_rgbw.desc": "SK6812 with dedicated white channel",
"device.spi.led_type.ws2811.desc": "External driver IC, 400 KHz, 12V strips",
"device.spi.led_type.ws2812.desc": "Original WS2812, 800 KHz, 3-wire RGB",
"device.spi.led_type.ws2812b.desc": "Most common, 800 KHz data, 3-wire RGB",
"device.spi.speed": "SPI Speed (Hz):",
"device.spi.speed.hint": "SPI clock speed. 800000 Hz for WS2812, 2400000 Hz for APA102.",
"device.spi.url": "GPIO/SPI Path:",
"device.spi.url.hint": "GPIO pin or SPI device path (e.g. spi://gpio:18)",
"device.started": "Обработка запущена",
"device.status.connected": "Подключено",
"device.status.disconnected": "Отключено",
"device.status.error": "Ошибка",
"device.status.idle": "Ожидание",
"device.status.processing": "Обработка",
"device.stopped": "Обработка остановлена",
"device.stream_selector.hint": "Выберите источник, определяющий что это устройство захватывает и обрабатывает",
"device.stream_selector.label": "Источник:",
"device.stream_selector.none": "-- Источник не назначен --",
"device.stream_selector.saved": "Настройки источника обновлены",
"device.stream_settings.border_width": "Ширина границы (px):",
"device.stream_settings.border_width_hint": "Сколько пикселей от края экрана выбирать для цвета LED (1-100)",
"device.stream_settings.interpolation": "Режим интерполяции:",
"device.stream_settings.interpolation.average": "Среднее",
"device.stream_settings.interpolation.dominant": "Доминантный",
"device.stream_settings.interpolation.median": "Медиана",
"device.stream_settings.interpolation_hint": "Как вычислять цвет LED из выбранных пикселей",
"device.stream_settings.smoothing": "Сглаживание:",
"device.stream_settings.smoothing_hint": "Временное смешивание между кадрами (0=нет, 1=полное). Уменьшает мерцание.",
"device.stream_settings.title": "Настройки источника",
"device.tip.add": "Нажмите, чтобы добавить новое LED устройство",
"device.tip.brightness": "Перетащите для регулировки яркости. Изменения применяются мгновенно.",
"device.tip.identity": "Идентификация устройства — имя, тип и индикатор онлайн/офлайн.",
"device.tip.menu": "Дополнительные действия — дублировать, скрыть или удалить устройство.",
"device.tip.metadata": "Адрес устройства и версия прошивки. Кликните по URL, чтобы открыть веб-интерфейс устройства.",
"device.tip.ping": "Пинг устройства — обновляет статус и измеряет задержку.",
"device.tip.settings": "Открыть настройки устройства — имя, URL, возможности и проверки соединения.",
"device.tip.stream_selector": "Настройки источника и проекции LED для этого устройства",
"device.tutorial.start": "Начать обучение",
"device.type": "Тип устройства:",
"device.type.adalight": "Adalight",
"device.type.adalight.desc": "Серийный протокол для Arduino",
"device.type.ambiled": "AmbiLED",
"device.type.ambiled.desc": "Серийный протокол AmbiLED",
"device.type.ble": "BLE LED контроллер",
"device.type.ble.desc": "Bluetooth LE ленты: SP110E, Triones, Zengge, Govee (один цвет на всю ленту)",
"device.type.chroma": "Razer Chroma",
"device.type.chroma.desc": "Razer peripherals via Chroma SDK",
"device.type.ddp": "DDP",
"device.type.ddp.desc": "Прямая отправка пикселей по UDP (Pixelblaze, ESPixelStick, Falcon)",
"device.type.dmx": "DMX",
"device.type.dmx.desc": "Art-Net / sACN (E1.31) сценическое освещение",
"device.type.espnow": "ESP-NOW",
"device.type.espnow.desc": "Ultra-low-latency via ESP32 gateway",
"device.type.gamesense": "SteelSeries",
"device.type.gamesense.desc": "SteelSeries peripherals via GameSense",
"device.type.govee": "Govee",
"device.type.govee.desc": "Лампа / комплект Govee Wi-Fi через LAN API",
"device.type.group": "Группа",
"device.type.group.desc": "Объединение нескольких устройств в одно виртуальное",
"device.type.hint": "Выберите тип LED контроллера",
"device.type.hue": "Philips Hue",
"device.type.hue.desc": "Hue Entertainment API streaming",
"device.type.lifx": "LIFX",
"device.type.lifx.desc": "Умная лампа / лента LIFX по LAN",
"device.type.mock": "Mock",
"device.type.mock.desc": "Виртуальное устройство для тестов",
"device.type.mqtt": "MQTT",
"device.type.mqtt.desc": "Отправка LED данных через MQTT брокер",
"device.type.nanoleaf": "Nanoleaf",
"device.type.nanoleaf.desc": "Nanoleaf Light Panels / Canvas / Shapes / Lines / Elements (HTTP REST, требует сопряжения)",
"device.type.opc": "OPC",
"device.type.opc.desc": "Open Pixel Control (Fadecandy, xLights, любительские драйверы)",
"device.type.openrgb": "OpenRGB",
"device.type.openrgb.desc": "Управление RGB через OpenRGB",
"device.type.spi": "SPI Direct",
"device.type.spi.desc": "Raspberry Pi GPIO/SPI LED strips",
"device.type.usbhid": "USB HID",
"device.type.usbhid.desc": "USB RGB peripherals (keyboards, mice)",
"device.type.wiz": "WiZ",
"device.type.wiz.desc": "Лампа WiZ Connected (Philips) по UDP",
"device.type.wled": "WLED",
"device.type.wled.desc": "WiFi LED контроллер по HTTP/UDP",
"device.type.ws": "WebSocket",
"device.type.ws.desc": "Стриминг LED данных через WebSocket",
"device.type.yeelight": "Yeelight",
"device.type.yeelight.desc": "Умная лампа / лента Xiaomi по LAN (один цвет, усреднённый по ленте)",
"device.url": "URL:",
"device.url.hint": "IP адрес или имя хоста устройства (напр. http://192.168.1.100)",
"device.url.placeholder": "http://192.168.1.100",
"device.usbhid.url": "VID:PID:",
"device.usbhid.url.hint": "USB Vendor:Product ID in hex (e.g. 1532:0084)",
"device.wiz.url": "IP-адрес:",
"device.wiz.url.hint": "IP-адрес лампы WiZ в локальной сети. UDP-порт 38899 — по умолчанию.",
"device.wiz.url.placeholder": "192.168.1.50",
"device.wiz_min_interval": "Мин. интервал обновления:",
"device.wiz_min_interval.hint": "Локальный лимит частоты команд (мс). UDP fire-and-forget справляется с быстрыми обновлениями; по умолчанию 50 мс ≈ 20 Гц.",
"device.ws_url": "URL подключения:",
"device.ws_url.hint": "WebSocket URL для подключения клиентов и получения LED данных",
"device.yeelight.url": "IP-адрес:",
"device.yeelight.url.hint": "IP-адрес лампы Yeelight в локальной сети. TCP-порт 55443 фиксирован протоколом.",
"device.yeelight.url.placeholder": "192.168.1.50",
"device.yeelight_min_interval": "Мин. интервал обновления:",
"device.yeelight_min_interval.hint": "Локальный лимит частоты команд (мс). По умолчанию 500 мс держит лампу под ограничением ~1 команда/сек; меньшие значения могут вызвать троттлинг.",
"device_discovery.added": "Устройство успешно добавлено",
"device_discovery.error.add_failed": "Не удалось добавить устройство",
"device_discovery.error.fill_all_fields": "Пожалуйста, заполните все поля",
"devices.add": "Добавить Новое Устройство",
"devices.failed": "Не удалось загрузить устройства",
"devices.loading": "Загрузка устройств...",
"devices.none": "Устройства не настроены",
"devices.title": "Устройства",
"devices.wled_config": "Конфигурация WLED:",
"devices.wled_link": "официальное приложение WLED",
"devices.wled_note": "Настройте ваше WLED устройство (эффекты, сегменты, порядок цветов, ограничения питания и т.д.) используя",
"devices.wled_note_or": "или встроенный",
"devices.wled_note_webui": "(откройте IP устройства в браузере).",
"devices.wled_note2": "Этот контроллер отправляет данные о цвете пикселей и управляет яркостью для каждого устройства.",
"devices.wled_webui_link": "веб-интерфейс WLED",
"displays.badge.primary": "Основной",
"displays.badge.secondary": "Вторичный",
"displays.failed": "Не удалось загрузить дисплеи",
"displays.index": "Индекс Дисплея:",
"displays.information": "Информация о Дисплеях",
"displays.layout": "Дисплеи",
"displays.legend.primary": "Основной Дисплей",
"displays.legend.secondary": "Вторичный Дисплей",
"displays.loading": "Загрузка дисплеев...",
"displays.none": "Нет доступных дисплеев",
"displays.picker.adb_connect": "Подключить ADB устройство",
"displays.picker.adb_connect.button": "Подключить",
"displays.picker.adb_connect.error": "Не удалось подключить устройство",
"displays.picker.adb_connect.placeholder": "IP адрес (напр. 192.168.2.201)",
"displays.picker.adb_connect.success": "Устройство подключено",
"displays.picker.adb_disconnect": "Отключить",
"displays.picker.click_to_select": "Нажмите, чтобы выбрать этот дисплей",
"displays.picker.eyebrow.channel": "Дисплей · Карта",
"displays.picker.eyebrow.channel.device": "Устройство · Список",
"displays.picker.eyebrow.label": "Источник",
"displays.picker.foot.dismiss": "закрыть",
"displays.picker.foot.select": "выбрать монитор",
"displays.picker.foot.select.device": "выбрать устройство",
"displays.picker.no_android": "Android устройства не найдены. Подключите по USB или введите IP выше.",
"displays.picker.select": "Выберите дисплей...",
"displays.picker.title": "Выберите Дисплей",
"displays.picker.title.accent": "Дисплей",
"displays.picker.title.lead": "Выбрать",
"displays.position": "Позиция:",
"displays.refresh_rate": "Частота Обновления:",
"displays.resolution": "Разрешение:",
"displays.title": "Доступные Дисплеи",
"donation.about_author": "Создатель —",
"donation.about_donate": "Поддержать разработку",
"donation.about_license": "Лицензия MIT",
"donation.about_opensource": "LedGrab — программа с открытым исходным кодом, бесплатная для использования и модификации.",
"donation.about_title": "О LedGrab",
"donation.dismiss": "Больше не показывать",
"donation.later": "Напомнить позже",
"donation.message": "LedGrab — бесплатный проект с открытым кодом. Если он вам полезен, поддержите разработку.",
"donation.support": "Поддержать проект",
"donation.view_source": "Исходный код",
"error.network": "Сетевая ошибка",
"error.unauthorized": "Не авторизован - пожалуйста, войдите",
"error.unknown": "Произошла ошибка",
"filters.add": "Добавить фильтр",
"filters.auto_crop": "Авто Обрезка",
"filters.auto_crop.desc": "Удаление чёрных полос из леттербокса",
"filters.brightness": "Яркость",
"filters.brightness.desc": "Регулировка общей яркости изображения",
"filters.color_correction": "Цветокоррекция",
"filters.color_correction.desc": "Баланс белого и цветовая температура",
"filters.css_filter_template": "Шаблон Фильтра Полос",
"filters.css_filter_template.desc": "Встроить другой шаблон обработки полос",
"filters.downscaler": "Уменьшение",
"filters.downscaler.desc": "Снижение разрешения для быстрой обработки",
"filters.drag_to_reorder": "Перетащите для изменения порядка",
"filters.empty": "Фильтры не добавлены. Используйте селектор ниже для добавления.",
"filters.filter_template": "Шаблон фильтров",
"filters.filter_template.desc": "Встроить другой шаблон обработки",
"filters.flip": "Отражение",
"filters.flip.desc": "Зеркальное отражение по горизонтали или вертикали",
"filters.frame_interpolation": "Интерполяция кадров",
"filters.frame_interpolation.desc": "Сглаживание между кадрами",
"filters.gamma": "Гамма",
"filters.gamma.desc": "Нелинейная коррекция кривой яркости",
"filters.noise_gate": "Шумоподавление",
"filters.noise_gate.desc": "Подавление малых изменений цвета ниже порога",
"filters.palette_quantization": "Квантизация палитры",
"filters.palette_quantization.desc": "Сокращение цветов до ограниченной палитры",
"filters.pixelate": "Пикселизация",
"filters.pixelate.desc": "Мозаичное усреднение блоков",
"filters.remove": "Удалить",
"filters.reverse": "Реверс",
"filters.reverse.desc": "Изменить порядок светодиодов на обратный",
"filters.saturation": "Насыщенность",
"filters.saturation.desc": "Усиление или снижение интенсивности цвета",
"filters.select_type": "Выберите тип фильтра...",
"game_integration.adapter": "Адаптер",
"game_integration.adapter_config": "Конфигурация адаптера",
"game_integration.adapter_type": "Игра / Адаптер:",
"game_integration.adapter_type.hint": "Выберите тип игры или адаптера",
"game_integration.add": "Добавить игровую интеграцию",
"game_integration.auto_setup": "Автонастройка",
"game_integration.auto_setup.failed": "Автонастройка не удалась",
"game_integration.auto_setup.game_not_found": "Установка игры не найдена",
"game_integration.auto_setup.not_supported": "Этот адаптер не поддерживает автонастройку",
"game_integration.auto_setup.save_first": "Сначала сохраните интеграцию перед запуском автонастройки",
"game_integration.auto_setup.success": "Файл конфигурации успешно записан",
"game_integration.auto_setup.token_generated": "Токен авторизации был сгенерирован автоматически",
"game_integration.confirm_delete": "Удалить эту игровую интеграцию?",
"game_integration.created": "Игровая интеграция создана",
"game_integration.deleted": "Игровая интеграция удалена",
"game_integration.description": "Описание:",
"game_integration.description.hint": "Необязательное описание назначения интеграции",
"game_integration.edit": "Редактировать игровую интеграцию",
"game_integration.enabled": "Включено",
"game_integration.enabled.hint": "Отключённые интеграции перестают опрашивать и генерировать события",
"game_integration.error.delete_failed": "Не удалось удалить игровую интеграцию",
"game_integration.error.name_required": "Требуется имя",
"game_integration.error.save_failed": "Не удалось сохранить игровую интеграцию",
"game_integration.error.save_first": "Сначала сохраните интеграцию для проверки соединения",
"game_integration.event_mappings": "Привязка событий",
"game_integration.event_mappings.hint": "Привяжите игровые события к LED-эффектам. Каждый тип события может вызывать свой визуальный эффект.",
"game_integration.events.monitor": "Монитор событий",
"game_integration.events.title": "События в реальном времени",
"game_integration.events.waiting": "Ожидание событий...",
"game_integration.mapping.add": "+ Добавить привязку",
"game_integration.mapping.color": "Цвет",
"game_integration.mapping.duration": "Длительность (мс)",
"game_integration.mapping.effect_type": "Эффект",
"game_integration.mapping.event_type": "Событие",
"game_integration.mapping.intensity": "Интенсивность",
"game_integration.mapping.priority": "Приоритет",
"game_integration.mapping.select_preset": "Загрузить пресет...",
"game_integration.mappings": "Привязки",
"game_integration.name": "Имя:",
"game_integration.name.hint": "Описательное имя для этой игровой интеграции",
"game_integration.no_config": "Конфигурация для этого адаптера не требуется.",
"game_integration.preset.fps_combat": "FPS Бой",
"game_integration.preset.moba_health": "MOBA Здоровье",
"game_integration.preset.select": "Загрузить пресет...",
"game_integration.section_title": "Игровые интеграции",
"game_integration.setup_instructions": "Инструкции по настройке",
"game_integration.setup_instructions.hint": "Следуйте этим шагам для настройки отправки данных из игры",
"game_integration.status": "Статус",
"game_integration.status.active": "Активна",
"game_integration.status.inactive": "Неактивна",
"game_integration.test.button": "Тестировать соединение",
"game_integration.test.error": "Ошибка соединения",
"game_integration.test.success": "Соединение успешно! Получены события.",
"game_integration.test.timeout": "События не получены за отведённое время.",
"game_integration.test.waiting": "Ожидание событий от игры...",
"game_integration.updated": "Игровая интеграция обновлена",
"gradient.error.delete_failed": "Не удалось удалить палитру",
"gradient.error.save_failed": "Не удалось сохранить палитру",
"graph.action.connect": "Соединить",
"graph.action.disconnect": "Отсоединить",
"graph.action.move": "Переместить узел",
"graph.action.rewire": "Переподключить слот",
"graph.add_entity": "Добавить сущность",
"graph.bulk_delete_confirm": "Удалить {count} выбранных сущностей?",
"graph.choose_connection": "Выберите соединение",
"graph.color_picker": "Цвет узла",
"graph.connection_failed": "Не удалось обновить соединение",
"graph.connection_removed": "Соединение удалено",
"graph.connection_updated": "Соединение обновлено",
"graph.create_and_connect": "Создать и соединить…",
"graph.delete_with_dependents_confirm": "Этот объект используется {count} другими: {names}. Удалить и разорвать эти связи?",
"graph.disconnect": "Отключить",
"graph.disconnect_failed": "Не удалось отключить",
"graph.duplicate": "Дублировать выбранное",
"graph.duplicate_done": "Продублировано источников: {count}",
"graph.duplicate_done_warn": "Продублировано источников: {count} — часть ссылок не удалось перепривязать",
"graph.duplicate_failed": "Не удалось дублировать выбранное",
"graph.duplicate_none": "Выберите один или несколько узлов для дублирования",
"graph.duplicate_none_eligible": "В выборе нечего дублировать (только источники значений и цветовых лент)",
"graph.empty": "Ещё нет сущностей",
"graph.empty.hint": "Создайте устройства, источники и цели, чтобы увидеть их здесь.",
"graph.export": "Экспорт графа (JSON)",
"graph.export_done": "Граф экспортирован",
"graph.export_failed": "Не удалось экспортировать граф",
"graph.filter": "Фильтр узлов",
"graph.filter_clear": "Очистить фильтр",
"graph.filter_group.audio": "Аудио",
"graph.filter_group.capture": "Захват",
"graph.filter_group.other": "Другое",
"graph.filter_group.strip": "Цвет. полосы",
"graph.filter_group.targets": "Цели",
"graph.filter_placeholder": "Фильтр по имени...",
"graph.filter_running": "Запущен",
"graph.filter_stopped": "Остановлен",
"graph.filter_types": "Типы",
"graph.fit_all": "Показать все узлы",
"graph.fullscreen": "Полноэкранный режим",
"graph.help.add": "Добавить сущность",
"graph.help.click": "Клик",
"graph.help.click_desc": "Выбрать узел",
"graph.help.dblclick": "Двойной клик",
"graph.help.dblclick_desc": "Приблизить к узлу",
"graph.help.delete": "Удалить / Отсоединить",
"graph.help.deselect": "Снять выбор",
"graph.help.drag_node": "Перетащить узел",
"graph.help.drag_node_desc": "Переместить",
"graph.help.drag_port": "Перетащить порт",
"graph.help.drag_port_desc": "Соединить сущности",
"graph.help.filter": "Фильтр",
"graph.help.fullscreen": "Полный экран",
"graph.help.navigate": "Навигация по узлам",
"graph.help.redo": "Повторить",
"graph.help.right_click": "ПКМ по связи",
"graph.help.right_click_desc": "Отсоединить связь",
"graph.help.search": "Поиск",
"graph.help.select_all": "Выбрать все",
"graph.help.shift_click": "Shift+Клик",
"graph.help.shift_click_desc": "Множественный выбор",
"graph.help.shift_drag": "Shift+Перетащить",
"graph.help.shift_drag_desc": "Выбор рамкой",
"graph.help.shortcuts": "Горячие клавиши",
"graph.help.undo": "Отменить",
"graph.help_title": "Горячие клавиши",
"graph.issue.broken_ref": "Битая ссылка: {field}",
"graph.issue.cycle": "Входит в цикл зависимостей",
"graph.issues": "Проблемы",
"graph.issues_none": "Проблем не найдено",
"graph.legend": "Легенда",
"graph.minimap": "Миникарта",
"graph.no_compatible_connection": "Нет совместимого соединения между этими объектами",
"graph.nothing_to_redo": "Нечего повторять",
"graph.nothing_to_undo": "Нечего отменять",
"graph.redone": "Повторено",
"graph.relayout": "Перестроить",
"graph.relayout_confirm": "Сбросить все ручные позиции узлов и перестроить граф?",
"graph.replace_connection_confirm": "Заменить существующее соединение?",
"graph.rewire": "Переподключить…",
"graph.rewire_choose_source": "Выберите новый источник",
"graph.search": "Поиск узлов",
"graph.search_placeholder": "Поиск сущностей...",
"graph.title": "Граф",
"graph.tooltip.errors": "Ошибки",
"graph.tooltip.fps": "FPS",
"graph.tooltip.uptime": "Время работы",
"graph.undone": "Отменено",
"graph.zoom_in": "Приблизить",
"graph.zoom_out": "Отдалить",
"ha_light.add": "Добавить HA-цель освещения",
"ha_light.button.turn_off": "Выключить лампы",
"ha_light.color_source": "Источник цвета:",
"ha_light.color_source.color_vs": "Источник значения цвета",
"ha_light.color_source.css": "Полоса цвета",
"ha_light.color_source.hint": "Выберите Источник полосы цвета (диапазоны LED для каждой лампы) или Источник значения цвета (один цвет на все лампы).",
"ha_light.color_tolerance": "Допуск цвета:",
"ha_light.color_tolerance.hint": "Пропускать обновление цвета, если разница RGB ниже этого порога. Снижает нагрузку на HA для статичных сцен.",
"ha_light.connection_metric": "Подключение Home Assistant",
"ha_light.connection_tooltip": "Подключение HA",
"ha_light.created": "HA-цель освещения создана",
"ha_light.css_source": "Источник полосы цвета:",
"ha_light.description": "Описание (опционально):",
"ha_light.edit": "Редактировать HA-цель освещения",
"ha_light.error.color_source_required": "Источник значения цвета обязателен в режиме одного цвета",
"ha_light.error.ha_source_required": "Требуется HA-подключение",
"ha_light.error.name_required": "Требуется имя",
"ha_light.ha_source": "HA-подключение:",
"ha_light.lights.few": "{count} лампы",
"ha_light.lights.many": "{count} ламп",
"ha_light.lights.one": "{count} лампа",
"ha_light.lights.other": "{count} ламп",
"ha_light.mapping.brightness": "Множитель яркости:",
"ha_light.mapping.entity_id": "ID сущности:",
"ha_light.mapping.led_end": "Конец LED (-1=последний):",
"ha_light.mapping.led_start": "Начало LED:",
"ha_light.mapping.search_entity": "Поиск сущностей-ламп...",
"ha_light.mapping.select_entity": "Выберите сущность-лампу...",
"ha_light.mapping.unassigned": "— Сущность не выбрана",
"ha_light.mappings": "Привязки ламп:",
"ha_light.mappings.add": "Добавить привязку",
"ha_light.mappings.color_vs_hint": "Все указанные лампы получат один и тот же цвет от выбранного Источника значения цвета.",
"ha_light.mappings.hint": "Сопоставьте диапазоны LED с сущностями ламп HA. Каждая привязка усредняет LED-сегмент до одного цвета.",
"ha_light.min_brightness_threshold": "Мин. порог яркости:",
"ha_light.min_brightness_threshold.hint": "Эффективная яркость ниже этого значения выключает свет полностью (0 = отключено).",
"ha_light.name": "Имя:",
"ha_light.name.placeholder": "Лампы гостиной",
"ha_light.section.targets": "Цели освещения",
"ha_light.section.title": "Home Assistant",
"ha_light.stop_action": "При остановке:",
"ha_light.stop_action.hint": "Что делать с привязанными лампами, когда цель прекращает стриминг.",
"ha_light.stop_action.none": "Ничего",
"ha_light.stop_action.none.desc": "Оставить лампы как есть",
"ha_light.stop_action.restore": "Восстановить",
"ha_light.stop_action.restore.desc": "Вернуть состояние на момент запуска",
"ha_light.stop_action.turn_off": "Выключить",
"ha_light.stop_action.turn_off.desc": "Выключить все привязанные лампы",
"ha_light.transition": "Переход:",
"ha_light.transition.hint": "Длительность плавного перехода между цветами (параметр HA transition).",
"ha_light.turn_off.failed": "Не удалось выключить лампы",
"ha_light.turn_off.success": "Лампы выключены",
"ha_light.update_rate": "Частота обновления:",
"ha_light.update_rate.hint": "Как часто отправлять обновления цвета лампам HA (0.5-5.0 Гц). Меньшие значения безопаснее для производительности HA.",
"ha_light.updated": "HA-цель освещения обновлена",
"ha_source.use_ssl.hint": "Включите для HTTPS / wss соединений с Home Assistant",
"http_endpoint.add": "Добавить HTTP-эндпоинт",
"http_endpoint.auth.set": "Авторизация",
"http_endpoint.auth_token": "Токен авторизации (необязательно):",
"http_endpoint.auth_token.edit_hint": "Оставьте пустым, чтобы сохранить текущий токен",
"http_endpoint.auth_token.hint": "Отправляется как \u0027Authorization: Bearer \u003ctoken\u003e\u0027. Добавьте свой Authorization-заголовок, чтобы переопределить.",
"http_endpoint.auth_token.reveal": "Показать / скрыть токен",
"http_endpoint.created": "HTTP-эндпоинт создан",
"http_endpoint.delete.confirm": "Удалить этот HTTP-эндпоинт? Источники-значений, ссылающиеся на него, потребуется перенастроить.",
"http_endpoint.deleted": "HTTP-эндпоинт удалён",
"http_endpoint.description": "Описание (необязательно):",
"http_endpoint.edit": "Изменить HTTP-эндпоинт",
"http_endpoint.error.load": "Не удалось загрузить HTTP-эндпоинт",
"http_endpoint.error.name_required": "Имя обязательно",
"http_endpoint.error.timeout_invalid": "Таймаут должен быть положительным числом",
"http_endpoint.error.url_required": "URL обязателен",
"http_endpoint.group.title": "HTTP-эндпоинты",
"http_endpoint.headers": "Заголовки:",
"http_endpoint.headers.add": "Добавить заголовок",
"http_endpoint.headers.count": "{n} заголовков",
"http_endpoint.headers.empty": "Нет дополнительных заголовков — будут отправлены значения по умолчанию.",
"http_endpoint.headers.hint": "Дополнительные заголовки запроса (например, X-API-Key, Accept).",
"http_endpoint.headers.name_placeholder": "Имя заголовка",
"http_endpoint.headers.value_placeholder": "Значение",
"http_endpoint.method": "Метод:",
"http_endpoint.method.get.desc": "Получить тело ответа.",
"http_endpoint.method.head.desc": "Только код статуса — без тела. Подходит для проверки доступности.",
"http_endpoint.name": "Имя:",
"http_endpoint.name.hint": "Описательное имя для этого эндпоинта",
"http_endpoint.name.placeholder": "Plex now-playing",
"http_endpoint.section.headers": "Заголовки",
"http_endpoint.section.request": "Запрос",
"http_endpoint.test": "Тестовый запрос",
"http_endpoint.test.body.json": "JSON-тело",
"http_endpoint.test.body.text": "Тело ответа",
"http_endpoint.test.failed": "Ошибка",
"http_endpoint.test.pending": "Проверка…",
"http_endpoint.test.success": "Успех",
"http_endpoint.timeout": "Таймаут (с):",
"http_endpoint.timeout.hint": "Максимальное время ожидания одного запроса (в секундах).",
"http_endpoint.updated": "HTTP-эндпоинт обновлён",
"http_endpoint.url": "URL:",
"http_endpoint.url.hint": "Полный http(s)-URL для опроса. Локальные адреса разрешены.",
"integrations.title": "Интеграции",
"locale.change": "Изменить язык",
"modal.discard_changes": "У вас есть несохранённые изменения. Отменить их?",
"notifications.bulk.body": "Одновременно произошло {count} событий устройств",
"notifications.bulk.title": "Изменилось несколько устройств",
"notifications.device_discovered.body": "{device} появилось в сети",
"notifications.device_discovered.title": "Новое устройство",
"notifications.device_lost.body": "{device} исчезло",
"notifications.device_lost.title": "Устройство пропало",
"notifications.device_offline.body": "{device} перестало отвечать",
"notifications.device_offline.title": "Устройство недоступно",
"notifications.device_online.body": "{device} снова в сети",
"notifications.device_online.title": "Устройство в сети",
"notifications.test.body": "Уведомления работают корректно.",
"notifications.test.title": "Тестовое уведомление LedGrab",
"notifications.unknown_device": "Неизвестное устройство",
"overlay.button.hide": "Скрыть визуализацию наложения",
"overlay.button.show": "Показать визуализацию наложения",
"overlay.error.start": "Не удалось запустить наложение",
"overlay.error.stop": "Не удалось остановить наложение",
"overlay.started": "Визуализация наложения запущена",
"overlay.stopped": "Визуализация наложения остановлена",
"overlay.toggle": "Переключить наложение на экран",
"pairing.cancel": "Отмена",
"pairing.close": "Закрыть",
"pairing.failed": "Сопряжение не удалось: {detail}",
"pairing.failed_prefix": "Сопряжение не удалось:",
"pairing.instructions.default": "Нажмите и удерживайте кнопку сопряжения на устройстве, затем нажмите «Начать». Устройства обычно открывают окно сопряжения на 30 секунд — действуйте быстро.",
"pairing.not_ready": "Устройство не ответило. Нажмите кнопку сопряжения на устройстве и попробуйте снова.",
"pairing.pairing": "Сопряжение…",
"pairing.retry": "Повторить",
"pairing.start": "Начать сопряжение",
"pairing.success": "Успешно сопряжено",
"pairing.title": "Сопряжение устройства",
"palette.search": "Поиск…",
"patch.checking": "ПРОВЕРКА",
"patch.disconnected": "ОТКЛЮЧЕНО",
"patch.not_configured": "НЕ НАСТРОЕНО",
"patch.offline": "ОФЛАЙН",
"patch.online": "ОНЛАЙН",
"patch.patched": "ПОДКЛЮЧЕНО",
"patch.paused": "ПАУЗА",
"patch.pipeline": "КОНВЕЙЕР",
"patch.polling": "ОПРОС",
"patch.preset": "ПРЕСЕТ",
"patch.ready": "ГОТОВ",
"patch.source": "ИСТОЧНИК",
"patch.standby": "ОЖИДАНИЕ",
"patch.streaming": "ТРАНСЛЯЦИЯ",
"patch.strip": "ПОЛОСА",
"patch.template": "ШАБЛОН",
"patch.ticking": "ИДЁТ",
"patch.unreachable": "НЕДОСТУПЕН",
"patch.value": "ЗНАЧЕНИЕ",
"pattern.add": "Добавить Шаблон Паттерна",
"pattern.capture_bg": "Захватить Фон",
"pattern.created": "Шаблон паттерна успешно создан",
"pattern.delete.confirm": "Вы уверены, что хотите удалить этот шаблон паттерна?",
"pattern.delete.referenced": "Невозможно удалить: шаблон используется целью",
"pattern.delete_selected": "Удалить Выбранный",
"pattern.deleted": "Шаблон паттерна успешно удалён",
"pattern.description.hint": "Необязательные заметки о назначении этого паттерна",
"pattern.description_label": "Описание (необязательно):",
"pattern.description_placeholder": "Опишите этот паттерн...",
"pattern.edit": "Редактировать Шаблон Паттерна",
"pattern.error.capture_bg_failed": "Не удалось захватить фон",
"pattern.error.clone_failed": "Не удалось клонировать шаблон узоров",
"pattern.error.delete_failed": "Не удалось удалить шаблон узоров",
"pattern.error.editor_open_failed": "Не удалось открыть редактор шаблона узоров",
"pattern.error.required": "Пожалуйста, заполните все обязательные поля",
"pattern.error.save_failed": "Не удалось сохранить шаблон узоров",
"pattern.name": "Имя Шаблона:",
"pattern.name.hint": "Описательное имя для этой раскладки прямоугольников",
"pattern.name.placeholder": "Мой Шаблон Паттерна",
"pattern.rect.add": "Добавить Прямоугольник",
"pattern.rect.empty": "Прямоугольники не определены. Добавьте хотя бы один.",
"pattern.rect.height": "В",
"pattern.rect.name": "Имя",
"pattern.rect.remove": "Удалить",
"pattern.rect.width": "Ш",
"pattern.rect.x": "X",
"pattern.rect.y": "Y",
"pattern.rectangles": "Прямоугольники",
"pattern.rectangles.hint": "Точная настройка позиций и размеров прямоугольников в координатах (0.0 до 1.0)",
"pattern.source_for_bg": "Источник для Фона:",
"pattern.source_for_bg.none": "-- Выберите источник --",
"pattern.updated": "Шаблон паттерна успешно обновлён",
"pattern.visual_editor": "Визуальный Редактор",
"pattern.visual_editor.hint": "Нажмите кнопки + чтобы добавить прямоугольники. Тяните края для изменения размера, тяните внутри для перемещения.",
"perf.all_online": "все онлайн",
"perf.captures_count.few": "{count} источника",
"perf.captures_count.many": "{count} источников",
"perf.captures_count.one": "{count} источник",
"perf.idle": "простой",
"perf.max_ms": "макс {ms}мс",
"perf.no_captures": "нет источников",
"perf.no_devices": "нет устройств",
"perf.offline": "офлайн",
"perf.offline_count": "{count} офлайн",
"perf.online": "онлайн",
"perf.online_count": "{count} онлайн",
"perf.ratio_of_requested": "{percent}% от запрошенного · {captures}",
"perf.skipped_per_sec": "{rate} пропущ/с",
"perf.targets_count.few": "{count} цели",
"perf.targets_count.many": "{count} целей",
"perf.targets_count.one": "{count} цель",
"perf.tip.ago": "{seconds}с",
"perf.tip.now": "сейчас",
"perf.total_bytes": "всего {bytes}",
"perf.total_count": "{count} всего",
"picture_source.type.video": "Видео",
"picture_source.type.video.desc": "Потоковые кадры из загруженного видео",
"picture_source.video.end_time": "Время окончания (с):",
"picture_source.video.loop": "Зацикливание:",
"picture_source.video.resolution_limit": "Макс. ширина (px):",
"picture_source.video.resolution_limit.hint": "Уменьшение видео при декодировании для производительности",
"picture_source.video.speed": "Скорость воспроизведения:",
"picture_source.video.start_time": "Время начала (с):",
"playlists.action.start": "Запустить",
"playlists.action.stop": "Остановить",
"playlists.add": "Новый плейлист",
"playlists.chip.loop": "Цикл",
"playlists.chip.shuffle": "Перемешать",
"playlists.created": "Плейлист создан",
"playlists.delete_confirm": "Удалить плейлист «{name}»?",
"playlists.deleted": "Плейлист удалён",
"playlists.description": "Описание:",
"playlists.description.hint": "Необязательное описание плейлиста",
"playlists.edit": "Изменить плейлист",
"playlists.error.delete_failed": "Не удалось удалить плейлист",
"playlists.error.name_required": "Требуется название",
"playlists.error.no_presets": "Сначала создайте пресет сцены",
"playlists.error.save_failed": "Не удалось сохранить плейлист",
"playlists.error.start_failed": "Не удалось запустить плейлист",
"playlists.error.stop_failed": "Не удалось остановить плейлист",
"playlists.item.duration": "Секунды",
"playlists.item.missing": "Отсутствует",
"playlists.item.move_down": "Вниз",
"playlists.item.move_up": "Вверх",
"playlists.items.empty": "Сцен пока нет — добавьте ниже",
"playlists.items.search_placeholder": "Поиск сцен...",
"playlists.loop": "Зацикливание:",
"playlists.loop.hint": "Начинать заново с первой сцены после последней; если выключено — проиграть один раз и остановиться",
"playlists.name": "Название:",
"playlists.name.placeholder": "Мой плейлист",
"playlists.scene_many": "сцен",
"playlists.scene_one": "сцена",
"playlists.scenes": "Сцены:",
"playlists.scenes.add": "Добавить сцену",
"playlists.scenes.hint": "Пресеты сцен, которые перебирает плейлист, каждая удерживается своё время",
"playlists.scenes_count": "сцен",
"playlists.section.playback": "Воспроизведение",
"playlists.shuffle": "Перемешивание:",
"playlists.shuffle.hint": "Случайный порядок сцен в начале каждого цикла",
"playlists.start": "Запустить плейлист",
"playlists.started": "Плейлист запущен",
"playlists.status.playing": "Воспроизводится",
"playlists.status.stopped": "Остановлен",
"playlists.stop": "Остановить плейлист",
"playlists.stopped": "Плейлист остановлен",
"playlists.title": "Плейлисты",
"playlists.updated": "Плейлист обновлён",
"postprocessing.add": "Добавить Шаблон Фильтра",
"postprocessing.config.show": "Показать настройки",
"postprocessing.created": "Шаблон успешно создан",
"postprocessing.delete.confirm": "Вы уверены, что хотите удалить этот шаблон фильтра?",
"postprocessing.deleted": "Шаблон успешно удалён",
"postprocessing.description": "Шаблоны обработки определяют фильтры изображений и цветокоррекцию. Назначайте их обработанным источникам для единообразной постобработки на всех устройствах.",
"postprocessing.description_label": "Описание (необязательно):",
"postprocessing.description_placeholder": "Опишите этот шаблон...",
"postprocessing.edit": "Редактировать Шаблон Фильтра",
"postprocessing.error.delete": "Не удалось удалить шаблон фильтра",
"postprocessing.error.load": "Не удалось загрузить шаблоны фильтров",
"postprocessing.error.required": "Пожалуйста, заполните все обязательные поля",
"postprocessing.name": "Имя Шаблона:",
"postprocessing.name.placeholder": "Мой Шаблон Фильтра",
"postprocessing.test.error.failed": "Тест шаблона фильтра не удался",
"postprocessing.test.error.no_stream": "Пожалуйста, выберите источник",
"postprocessing.test.running": "Тестирование шаблона фильтра...",
"postprocessing.test.source_stream": "Источник:",
"postprocessing.test.title": "Тест шаблона фильтра",
"postprocessing.title": "Шаблоны Фильтров",
"postprocessing.updated": "Шаблон успешно обновлён",
"scene_preset.activated": "Пресет активирован",
"scene_preset.used_by": "Используется в %d автоматизации(ях)",
"scenes.action.activate": "Активировать",
"scenes.action.recapture": "Перезахват",
"scenes.activate": "Активировать сцену",
"scenes.activated": "Сцена активирована",
"scenes.activated_partial": "Сцена активирована частично",
"scenes.add": "Захватить сцену",
"scenes.capture": "Захват",
"scenes.captured": "Сцена захвачена",
"scenes.cloned": "Сцена клонирована",
"scenes.delete": "Удалить сцену",
"scenes.delete_confirm": "Удалить сцену \"{name}\"?",
"scenes.deleted": "Сцена удалена",
"scenes.description": "Описание:",
"scenes.description.hint": "Необязательное описание назначения этой сцены",
"scenes.edit": "Редактировать сцену",
"scenes.error.activate_failed": "Не удалось активировать сцену",
"scenes.error.clone_failed": "Не удалось клонировать сцену",
"scenes.error.delete_failed": "Не удалось удалить сцену",
"scenes.error.name_required": "Необходимо указать название",
"scenes.error.recapture_failed": "Не удалось перезахватить сцену",
"scenes.error.save_failed": "Не удалось сохранить сцену",
"scenes.errors": "ошибок",
"scenes.name": "Название:",
"scenes.name.hint": "Описательное имя для этого пресета сцены",
"scenes.name.placeholder": "Моя сцена",
"scenes.recapture": "Перезахватить текущее состояние",
"scenes.recapture_confirm": "Перезахватить текущее состояние в \"{name}\"?",
"scenes.recaptured": "Сцена перезахвачена",
"scenes.status.preset": "Пресет",
"scenes.targets": "Цели:",
"scenes.targets.add": "Добавить цель",
"scenes.targets.empty": "Цели не выбраны",
"scenes.targets.hint": "Выберите какие цели включить в снимок сцены",
"scenes.targets.search_placeholder": "Поиск целей...",
"scenes.targets_count": "целей",
"scenes.title": "Сцены",
"scenes.updated": "Сцена обновлена",
"search.action.activate": "Активировать",
"search.action.disable": "Отключить",
"search.action.enable": "Включить",
"search.action.start": "Запустить",
"search.action.stop": "Остановить",
"search.footer": "↑↓ навигация · Enter выбор · Esc закрыть",
"search.group.actions": "Действия",
"search.group.audio": "Аудиоисточники",
"search.group.automations": "Автоматизации",
"search.group.capture_templates": "Шаблоны захвата",
"search.group.cspt": "Шаблоны обработки полос",
"search.group.css": "Источники цветных лент",
"search.group.devices": "Устройства",
"search.group.kc_targets": "Цели Key Colors",
"search.group.pattern_templates": "Шаблоны паттернов",
"search.group.pp_templates": "Шаблоны постобработки",
"search.group.scenes": "Пресеты сцен",
"search.group.streams": "Потоки изображений",
"search.group.sync_clocks": "Синхронные часы",
"search.group.targets": "LED-цели",
"search.group.value": "Источники значений",
"search.loading": "Загрузка...",
"search.no_results": "Ничего не найдено",
"search.open": "Поиск (Ctrl+K)",
"search.placeholder": "Поиск... (Ctrl+K)",
"section.collapse_all": "Свернуть все секции",
"section.empty.assets": "Ресурсов пока нет. Нажмите +, чтобы загрузить.",
"section.empty.audio_processing_templates": "Пока нет шаблонов обработки звука. Нажмите +, чтобы создать.",
"section.empty.audio_sources": "Аудио-источников пока нет. Нажмите + для добавления.",
"section.empty.audio_templates": "Аудио-шаблонов пока нет. Нажмите + для добавления.",
"section.empty.automations": "Автоматизаций пока нет. Нажмите + для добавления.",
"section.empty.capture_templates": "Шаблонов захвата пока нет. Нажмите + для добавления.",
"section.empty.color_strips": "Цветных полос пока нет. Нажмите + для добавления.",
"section.empty.cspt": "Шаблонов обработки полос пока нет. Нажмите + для добавления.",
"section.empty.devices": "Устройств пока нет. Нажмите + для добавления.",
"section.empty.game_integrations": "Нет игровых интеграций. Нажмите +, чтобы создать.",
"section.empty.http_endpoints": "Пока нет HTTP-эндпоинтов. Нажмите +, чтобы добавить.",
"section.empty.kc_targets": "Целей ключевых цветов пока нет. Нажмите + для добавления.",
"section.empty.pattern_templates": "Шаблонов паттернов пока нет. Нажмите + для добавления.",
"section.empty.picture_sources": "Источников пока нет. Нажмите + для добавления.",
"section.empty.playlists": "Плейлистов пока нет. Нажмите + для добавления.",
"section.empty.pp_templates": "Шаблонов постобработки пока нет. Нажмите + для добавления.",
"section.empty.scenes": "Пресетов сцен пока нет. Нажмите + для добавления.",
"section.empty.sync_clocks": "Синхронных часов пока нет. Нажмите + для добавления.",
"section.empty.targets": "LED-целей пока нет. Нажмите + для добавления.",
"section.empty.value_sources": "Источников значений пока нет. Нажмите + для добавления.",
"section.empty.weather_sources": "Нет источников погоды. Нажмите + для добавления.",
"section.expand_all": "Развернуть все секции",
"section.filter.placeholder": "Фильтр...",
"section.filter.reset": "Очистить фильтр",
"server.healthy": "Сервер онлайн",
"server.offline": "Сервер офлайн",
"settings.activity_log.clear.auth_required": "Для очистки журнала требуется аутентификация",
"settings.activity_log.clear.button": "Очистить журнал",
"settings.activity_log.clear.confirm": "Очистить все записи журнала активности? Это действие нельзя отменить.",
"settings.activity_log.clear.error": "Не удалось очистить журнал активности",
"settings.activity_log.clear.hint": "Безвозвратно удалить все записи журнала. Это действие фиксируется - системная запись сохраняет, кто и когда выполнил очистку.",
"settings.activity_log.clear.label": "Очистить все записи",
"settings.activity_log.clear.success": "Журнал активности очищен",
"settings.activity_log.distinction_note": "Это постоянный журнал аудита - структурированные записи об изменениях объектов, событиях аутентификации и системных действиях. Он отличается от эфемерного просмотрщика отладочных логов (живой хвост журнала сервера, сбрасывается при отключении).",
"settings.activity_log.enabled.hint": "При отключении новые записи аудита не создаются. Существующие записи сохраняются.",
"settings.activity_log.enabled.label": "Включить запись активности",
"settings.activity_log.error.max_days_range": "Макс. возраст должен быть от 0 до 3650 дней",
"settings.activity_log.error.max_entries_range": "Макс. записей должно быть от 0 до 10 000 000",
"settings.activity_log.export.hint": "Скачать полный журнал активности в виде файла.",
"settings.activity_log.export.view_tab_hint": "Для экспорта с фильтрами используйте",
"settings.activity_log.export_csv.button": "CSV",
"settings.activity_log.export_csv.label": "Экспорт в CSV",
"settings.activity_log.export_json.button": "JSON",
"settings.activity_log.export_json.label": "Экспорт в JSON",
"settings.activity_log.max_days.hint": "Записи старше указанного числа дней удаляются автоматически. Укажите 0, чтобы отключить удаление по возрасту.",
"settings.activity_log.max_days.label": "Макс. возраст (дни)",
"settings.activity_log.max_entries.hint": "Максимальное количество хранимых записей. При достижении лимита самые старые записи удаляются. Укажите 0 для снятия ограничения.",
"settings.activity_log.max_entries.label": "Макс. записей",
"settings.activity_log.open_activity_tab": "вкладка «Активность»",
"settings.activity_log.open_log_viewer": "просмотрщик отладочных логов",
"settings.activity_log.save": "Сохранить настройки",
"settings.activity_log.save_error": "Не удалось сохранить настройки",
"settings.activity_log.saved": "Настройки журнала активности сохранены",
"settings.activity_log.section.clear": "Очистить журнал",
"settings.activity_log.section.export": "Экспорт",
"settings.activity_log.section.retention": "Хранение",
"settings.api_keys.empty": "API-ключи не настроены",
"settings.api_keys.hint": "API-ключи определяются в конфигурационном файле сервера (config.yaml). Отредактируйте файл и перезапустите сервер для применения изменений.",
"settings.api_keys.label": "API-ключи",
"settings.api_keys.load_error": "Не удалось загрузить API-ключи",
"settings.api_keys.meta.many": "ключей",
"settings.api_keys.meta.one": "ключ",
"settings.api_keys.read_only": "Только чтение",
"settings.auto_backup.backup_created": "Бэкап создан",
"settings.auto_backup.backup_error": "Ошибка создания бэкапа",
"settings.auto_backup.backup_now": "Создать бэкап",
"settings.auto_backup.enable": "Включить авто-бэкап",
"settings.auto_backup.hint": "Автоматическое создание периодических резервных копий конфигурации. Старые копии удаляются при превышении максимального количества.",
"settings.auto_backup.interval_label": "Интервал",
"settings.auto_backup.label": "Авто-бэкап",
"settings.auto_backup.last_backup": "Последний бэкап",
"settings.auto_backup.max_label": "Макс. копий",
"settings.auto_backup.never": "Никогда",
"settings.auto_backup.pill.running": "АКТИВНО",
"settings.auto_backup.save": "Сохранить настройки",
"settings.auto_backup.save_error": "Не удалось сохранить настройки авто-бэкапа",
"settings.auto_backup.saved": "Настройки авто-бэкапа сохранены",
"settings.auto_shutdown": "Авто-восстановление:",
"settings.auto_shutdown.hint": "Восстанавливать устройство в режим ожидания при остановке целей или сервера",
"settings.backup.button": "Скачать",
"settings.backup.error": "Ошибка скачивания резервной копии",
"settings.backup.hint": "Скачать всю конфигурацию (устройства, цели, потоки, шаблоны, автоматизации) в виде одного JSON-файла.",
"settings.backup.label": "Резервное копирование",
"settings.backup.success": "Резервная копия скачана",
"settings.brightness": "Яркость:",
"settings.brightness.hint": "Общая яркость для этого устройства (0-100%)",
"settings.button.cancel": "Отмена",
"settings.button.close": "Закрыть",
"settings.button.save": "Сохранить Изменения",
"settings.capture.failed": "Не удалось сохранить настройки захвата",
"settings.capture.saved": "Настройки захвата обновлены",
"settings.capture.title": "Настройки Захвата",
"settings.capture_template": "Шаблон Движка:",
"settings.capture_template.hint": "Движок захвата экрана и конфигурация для этого устройства",
"settings.daylight_timezone.hint": "IANA часовой пояс, в котором каждый дневной цикл «реального времени» читает настенные часы. Пусто (по умолчанию) — использовать системный часовой пояс сервера.",
"settings.daylight_timezone.label": "Часовой пояс дневного цикла",
"settings.daylight_timezone.save_error": "Не удалось сохранить часовой пояс",
"settings.daylight_timezone.saved": "Часовой пояс дневного цикла сохранён",
"settings.display_index": "Дисплей:",
"settings.display_index.hint": "Какой экран захватывать для этого устройства",
"settings.external_url.hint": "Если указан, этот базовый URL используется в URL-ах вебхуков и других пользовательских ссылках вместо автоопределённого локального IP. Пример: https://myserver.example.com:8080",
"settings.external_url.label": "Внешний URL",
"settings.external_url.placeholder": "https://myserver.example.com:8080",
"settings.external_url.save": "Сохранить",
"settings.external_url.save_error": "Не удалось сохранить внешний URL",
"settings.external_url.saved": "Внешний URL сохранён",
"settings.failed": "Не удалось сохранить настройки",
"settings.fps": "Целевой FPS:",
"settings.fps.hint": "Целевая частота кадров (10-90)",
"settings.general.title": "Основные Настройки",
"settings.health_interval": "Интервал Проверки (с):",
"settings.health_interval.hint": "Как часто проверять статус устройства (5-600 секунд)",
"settings.log_level.desc.critical": "Только критические ошибки",
"settings.log_level.desc.debug": "Подробный вывод для разработки",
"settings.log_level.desc.error": "Только ошибки",
"settings.log_level.desc.info": "Обычные сообщения",
"settings.log_level.desc.warning": "Возможные проблемы",
"settings.log_level.hint": "Изменить подробность логов сервера в реальном времени. DEBUG — максимум деталей, CRITICAL — только критические ошибки.",
"settings.log_level.label": "Уровень логирования",
"settings.log_level.save": "Применить",
"settings.log_level.save_error": "Не удалось изменить уровень логирования",
"settings.log_level.saved": "Уровень логирования изменён",
"settings.logs.clear": "Очистить",
"settings.logs.connect": "Подключить",
"settings.logs.disconnect": "Отключить",
"settings.logs.empty.sub": "Подключите WebSocket-поток, чтобы начать трансляцию.",
"settings.logs.empty.title": "Ожидание журналов",
"settings.logs.error": "Ошибка подключения к журналу",
"settings.logs.filter.all": "Все уровни",
"settings.logs.filter.all_desc": "Все сообщения лога",
"settings.logs.filter.error": "Только ошибки",
"settings.logs.filter.error_desc": "Только ошибки",
"settings.logs.filter.info": "Info+",
"settings.logs.filter.info_desc": "Info, предупреждения и ошибки",
"settings.logs.filter.warning": "Warning+",
"settings.logs.filter.warning_desc": "Только предупреждения и ошибки",
"settings.logs.hint": "Просмотр журнала сервера в реальном времени. Используйте фильтр для отображения нужных уровней.",
"settings.logs.label": "Журнал сервера",
"settings.logs.open_viewer": "Открыть логи",
"settings.logs.patch.connecting": "ПОДКЛЮЧЕНИЕ",
"settings.logs.patch.error": "ОФЛАЙН",
"settings.logs.patch.idle": "ОЖИДАНИЕ",
"settings.logs.patch.live": "ПОТОК",
"settings.logs.stat.err": "ОШИБ",
"settings.logs.stat.lines": "СТРОК",
"settings.logs.stat.warn": "ВНИМ",
"settings.logs.sub": "Живой поток лога сервера с фильтром по уровню. Открывается в полноэкранном слое.",
"settings.mqtt.base_topic_label": "Базовый топик",
"settings.mqtt.client_id_label": "Идентификатор клиента",
"settings.mqtt.enabled": "Включить MQTT",
"settings.mqtt.error_host_required": "Требуется указать хост брокера",
"settings.mqtt.hint": "Настройте подключение к MQTT-брокеру для условий и триггеров автоматизации.",
"settings.mqtt.host_label": "Хост брокера",
"settings.mqtt.label": "MQTT",
"settings.mqtt.password_label": "Пароль",
"settings.mqtt.password_set_hint": "Пароль задан — оставьте пустым, чтобы сохранить",
"settings.mqtt.port_label": "Порт",
"settings.mqtt.save": "Сохранить настройки MQTT",
"settings.mqtt.save_error": "Не удалось сохранить настройки MQTT",
"settings.mqtt.saved": "Настройки MQTT сохранены",
"settings.mqtt.username_label": "Имя пользователя",
"settings.notif_matrix.col.event": "Событие",
"settings.notif_matrix.event_count": "4 СОБЫТИЯ",
"settings.notifications.background.hint": "Постоянно сканировать локальную сеть (mDNS) и последовательные порты на новые LED-устройства. Отключите, чтобы убрать события «найдено/потеряно» в источнике. Перезапустите сервер, чтобы применить.",
"settings.notifications.background.label": "Фоновое обнаружение",
"settings.notifications.background.toggle": "Включить фоновое обнаружение",
"settings.notifications.channel.both.desc": "Снэк и системное уведомление",
"settings.notifications.channel.both.label": "Оба",
"settings.notifications.channel.none.desc": "Не уведомлять об этом событии",
"settings.notifications.channel.none.label": "Выкл",
"settings.notifications.channel.os.desc": "Системное уведомление (работает в фоне браузера)",
"settings.notifications.channel.os.label": "ОС",
"settings.notifications.channel.snack.desc": "Всплывающее сообщение внизу страницы",
"settings.notifications.channel.snack.label": "Снэк",
"settings.notifications.intro_hint": "Выберите способ оповещения для каждого события. «Снэк» — всплывающее сообщение внутри приложения, «ОС» — системное уведомление (требуется разрешение в браузере), «Оба» — оба варианта, «Выкл» — событие игнорируется.",
"settings.notifications.intro_label": "События устройств",
"settings.notifications.permission.denied": "Системные уведомления заблокированы — измените в настройках браузера",
"settings.notifications.permission.grant": "Разрешить",
"settings.notifications.permission.granted": "Системные уведомления включены",
"settings.notifications.permission.hint": "Браузер управляет разрешением на системные уведомления для каждого сайта отдельно. После отказа LedGrab уже не может запросить разрешение снова — его нужно сбросить в браузере. Нажмите на значок сайта (замок) в адресной строке → Настройки сайта → Уведомления → Разрешить, затем перезагрузите страницу.",
"settings.notifications.permission.label": "Разрешение на уведомления ОС",
"settings.notifications.permission.pill.denied": "ЗАБЛОКИРОВАНО",
"settings.notifications.permission.pill.granted": "РАЗРЕШЕНО",
"settings.notifications.permission.state.default": "Разрешение ещё не запрошено",
"settings.notifications.permission.state.denied": "Запрещено — измените в настройках браузера",
"settings.notifications.permission.state.granted": "Разрешено — будут показываться уведомления ОС",
"settings.notifications.row.discovered": "Новое устройство найдено",
"settings.notifications.row.lost": "Найденное устройство исчезло",
"settings.notifications.row.offline": "Устройство пропало",
"settings.notifications.row.online": "Устройство вернулось в сеть",
"settings.notifications.save_error": "Не удалось сохранить настройки уведомлений",
"settings.notifications.saved": "Настройки уведомлений сохранены",
"settings.notifications.test_button": "Отправить тестовое уведомление",
"settings.partial.export_button": "Экспорт",
"settings.partial.export_error": "Ошибка экспорта",
"settings.partial.export_success": "Экспорт выполнен",
"settings.partial.hint": "Экспортировать или импортировать один тип объектов. Импорт заменяет или объединяет данные и перезапускает сервер.",
"settings.partial.import_button": "Импорт из файла",
"settings.partial.import_confirm_merge": "Это ОБЪЕДИНИТ данные {store} и перезапустит сервер. Продолжить?",
"settings.partial.import_confirm_replace": "Это ЗАМЕНИТ все данные {store} и перезапустит сервер. Продолжить?",
"settings.partial.import_error": "Ошибка импорта",
"settings.partial.import_success": "Импорт выполнен",
"settings.partial.label": "Частичный экспорт / импорт",
"settings.partial.merge_label": "Объединить (добавить/перезаписать, сохранить существующие)",
"settings.partial.store.audio_sources": "Аудио-источники",
"settings.partial.store.audio_templates": "Аудио-шаблоны",
"settings.partial.store.automations": "Автоматизации",
"settings.partial.store.capture_templates": "Шаблоны захвата",
"settings.partial.store.color_strip_processing_templates": "Шаблоны обработки полос",
"settings.partial.store.color_strip_sources": "Цветные полосы",
"settings.partial.store.devices": "Устройства",
"settings.partial.store.output_targets": "LED-цели",
"settings.partial.store.pattern_templates": "Шаблоны паттернов",
"settings.partial.store.picture_sources": "Источники изображений",
"settings.partial.store.postprocessing_templates": "Шаблоны постобработки",
"settings.partial.store.scene_presets": "Пресеты сцен",
"settings.partial.store.sync_clocks": "Синхронные часы",
"settings.partial.store.value_sources": "Источники значений",
"settings.rail.group.system": "Система",
"settings.rail.group.workspace": "Рабочая зона",
"settings.restart.button": "Перезапустить",
"settings.restart.sub": "Перезапустить процесс LedGrab. Захват и подключенные устройства приостановятся примерно на 3 секунды.",
"settings.restart_confirm": "Перезапустить сервер? Активные цели будут остановлены.",
"settings.restart_server": "Перезапустить сервер",
"settings.restarting": "Перезапуск сервера...",
"settings.restore.button": "Восстановить",
"settings.restore.confirm": "Это заменит ВСЮ конфигурацию и перезапустит сервер. Вы уверены?",
"settings.restore.error": "Ошибка восстановления",
"settings.restore.hint": "Загрузите ранее сохранённый файл резервной копии для замены всей конфигурации. Сервер перезапустится автоматически.",
"settings.restore.label": "Восстановление конфигурации",
"settings.restore.restart_timeout": "Сервер не отвечает. Обновите страницу вручную.",
"settings.restore.restarting": "Сервер перезапускается...",
"settings.restore.success": "Конфигурация восстановлена",
"settings.save_bar.revert": "Отменить",
"settings.save_bar.save": "Сохранить",
"settings.save_bar.unsaved": "Несохранённые изменения в поле",
"settings.saved": "Настройки успешно сохранены",
"settings.saved_backups.delete": "Удалить",
"settings.saved_backups.delete_confirm": "Удалить эту резервную копию?",
"settings.saved_backups.delete_error": "Не удалось удалить копию",
"settings.saved_backups.download": "Скачать",
"settings.saved_backups.empty": "Нет сохранённых копий",
"settings.saved_backups.hint": "Файлы авто-бэкапа на сервере. Скачайте для локального хранения или удалите для освобождения места.",
"settings.saved_backups.label": "Сохранённые копии",
"settings.saved_backups.restore": "Восстановить",
"settings.saved_backups.type.auto": "авто",
"settings.saved_backups.type.manual": "ручной",
"settings.section.adapter": "Адаптер",
"settings.section.api_keys": "Идентификация и API",
"settings.section.auth": "Авторизация",
"settings.section.behavior": "Поведение",
"settings.section.broker": "Брокер",
"settings.section.configure": "Настройка",
"settings.section.connection": "Подключение",
"settings.section.controls": "Управление",
"settings.section.destructive": "ОПАСНО",
"settings.section.diagnostics": "Диагностика",
"settings.section.engine": "Движок",
"settings.section.file": "Файл",
"settings.section.filtering": "Фильтрация",
"settings.section.filters": "Фильтры",
"settings.section.gradient": "Палитра",
"settings.section.hardware": "Оборудование",
"settings.section.history": "История",
"settings.section.identity": "Идентификация",
"settings.section.layout": "Раскладка",
"settings.section.lifecycle": "Жизненный цикл",
"settings.section.line_properties": "Параметры линии",
"settings.section.loopback": "Локальный доступ",
"settings.section.manual": "Вручную",
"settings.section.mappings": "Сопоставления",
"settings.section.notes": "Заметки",
"settings.section.notif_channels": "Каналы",
"settings.section.notif_discovery": "Обнаружение",
"settings.section.notif_permission": "Разрешение ОС",
"settings.section.offsets": "Смещения",
"settings.section.output": "Вывод",
"settings.section.power": "Питание",
"settings.section.preview": "Превью",
"settings.section.protocol": "Протокол",
"settings.section.provider": "Провайдер",
"settings.section.refresh": "Обновление",
"settings.section.restart": "Перезапуск",
"settings.section.routing": "Маршрутизация",
"settings.section.server": "Сервер",
"settings.section.source": "Источник",
"settings.section.strip": "Лента",
"settings.section.test": "Тест",
"settings.section.test_setup": "Параметры теста",
"settings.section.timing": "Тайминг",
"settings.section.type": "Тип",
"settings.shutdown_action.hint": "Что происходит с LED-целями при остановке сервера. «Остановить цели» — обычная последовательность остановки, устройства с авто-восстановлением восстановят прежнее состояние. «Ничего» — оставить свет таким, каким он был на последнем кадре.",
"settings.shutdown_action.label": "Действие при выключении",
"settings.shutdown_action.opt.nothing": "Ничего",
"settings.shutdown_action.opt.nothing_desc": "Оставить свет на последнем кадре",
"settings.shutdown_action.opt.stop": "Остановить цели",
"settings.shutdown_action.opt.stop_desc": "Обычная остановка (учитывается авто-восстановление устройств)",
"settings.shutdown_action.save_error": "Не удалось сохранить действие при выключении",
"settings.shutdown_action.saved": "Действие при выключении сохранено",
"settings.tab.about": "О программе",
"settings.tab.activity_log": "Журнал активности",
"settings.tab.appearance": "Оформление",
"settings.tab.backup": "Бэкап",
"settings.tab.general": "Основные",
"settings.tab.mqtt": "MQTT",
"settings.tab.notifications": "Уведомления",
"settings.tab.updates": "Обновления",
"settings.title": "Настройки",
"settings.url.hint": "IP адрес или имя хоста устройства",
"setup.copied": "Скопировано в буфер обмена",
"setup.copy": "Скопировать фрагмент",
"setup.description": "На этом сервере LedGrab не настроены API-ключи, поэтому доступ с других устройств в сети отключён из соображений безопасности. Чтобы разрешить доступ по локальной сети, настройте ключ на машине, где работает сервер.",
"setup.hint_openssl": "Сгенерировать надёжный ключ: Linux/macOS — \u003ccode\u003eopenssl rand -hex 32\u003c/code\u003e; Windows PowerShell — \u003ccode\u003e[guid]::NewGuid().ToString(\u0027N\u0027) + [guid]::NewGuid().ToString(\u0027N\u0027)\u003c/code\u003e.",
"setup.retry": "Я настроил ключ — проверить снова",
"setup.step1_label": "1. На машине с сервером откройте \u003ccode\u003econfig/default_config.yaml\u003c/code\u003e:",
"setup.step2_label": "2. Перезапустите сервер, затем перезагрузите эту страницу и войдите с этим ключом.",
"setup.step3_label": "Либо откройте LedGrab прямо на машине с сервером (через loopback), ключ не нужен:",
"setup.still_required": "Сервер всё ещё сообщает об отсутствии API-ключей. Проверьте, что файл сохранён и сервер перезапущен.",
"setup.title": "Требуется настройка сервера",
"sidebar.fps": "FPS",
"sidebar.load": "Нагр.",
"sidebar.workspaces": "Разделы",
"stream.error.clone_capture_failed": "Не удалось клонировать шаблон захвата",
"stream.error.clone_picture_failed": "Не удалось клонировать источник изображения",
"stream.error.clone_pp_failed": "Не удалось клонировать шаблон постобработки",
"streams.add": "Добавить Источник",
"streams.add.processed": "Добавить Обработанный",
"streams.add.raw": "Добавить Захват Экрана",
"streams.add.static_image": "Добавить статическое изображение (источник)",
"streams.add.video": "Добавить видеоисточник",
"streams.capture_template": "Шаблон Движка:",
"streams.capture_template.hint": "Шаблон движка, определяющий способ захвата экрана",
"streams.created": "Источник успешно создан",
"streams.delete.confirm": "Вы уверены, что хотите удалить этот источник?",
"streams.deleted": "Источник успешно удалён",
"streams.description": "Источники определяют конвейер захвата. Сырой источник захватывает экран с помощью шаблона захвата. Обработанный источник применяет постобработку к другому источнику. Назначайте источники устройствам.",
"streams.description_label": "Описание (необязательно):",
"streams.description_placeholder": "Опишите этот источник...",
"streams.display": "Дисплей:",
"streams.display.hint": "Какой экран захватывать",
"streams.edit": "Редактировать Источник",
"streams.edit.processed": "Редактировать Обработанный Источник",
"streams.edit.raw": "Редактировать Захват Экрана",
"streams.edit.static_image": "Редактировать статическое изображение (источник)",
"streams.edit.video": "Редактировать видеоисточник",
"streams.error.delete": "Не удалось удалить источник",
"streams.error.load": "Не удалось загрузить источники",
"streams.error.required": "Пожалуйста, заполните все обязательные поля",
"streams.group.assets": "Ресурсы",
"streams.group.audio": "Аудио",
"streams.group.audio_processing": "Обработка звука",
"streams.group.audio_templates": "Аудио шаблоны",
"streams.group.color_strip": "Цветовые Полосы",
"streams.group.css_processing": "Шаблоны Обработки",
"streams.group.game": "Игровая интеграция",
"streams.group.http": "HTTP",
"streams.group.proc_templates": "Шаблоны фильтров",
"streams.group.processed": "Источники",
"streams.group.raw": "Источники",
"streams.group.raw_templates": "Шаблоны движка",
"streams.group.static_image": "Статические",
"streams.group.sync": "Часы синхронизации",
"streams.group.value": "Источники значений",
"streams.group.video": "Видео",
"streams.group.weather": "Погода",
"streams.image_asset": "Изображение:",
"streams.image_asset.search": "Поиск изображений…",
"streams.image_asset.select": "Выберите изображение…",
"streams.modal.loading": "Загрузка...",
"streams.name": "Имя Источника:",
"streams.name.placeholder": "Мой Источник",
"streams.pp_template": "Шаблон Фильтра:",
"streams.pp_template.hint": "Шаблон фильтра для применения к источнику",
"streams.section.streams": "Источники",
"streams.source": "Источник:",
"streams.source.hint": "Источник, к которому применяются фильтры обработки",
"streams.target_fps": "Целевой FPS:",
"streams.target_fps.hint": "Целевое количество кадров в секунду (1-90)",
"streams.test.duration": "Длительность Захвата (с):",
"streams.test.error.failed": "Тест источника не удался",
"streams.test.run": "Запустить",
"streams.test.running": "Тестирование источника...",
"streams.test.title": "Тест Источника",
"streams.title": "Входы",
"streams.type": "Тип:",
"streams.type.processed": "Обработанный",
"streams.type.raw": "Захват экрана",
"streams.type.static_image": "Статическое изображение",
"streams.updated": "Источник успешно обновлён",
"streams.video_asset": "Видео:",
"streams.video_asset.search": "Поиск видео…",
"streams.video_asset.select": "Выберите видео…",
"sync_clock.action.pause": "Приостановить",
"sync_clock.action.reset": "Сбросить",
"sync_clock.action.resume": "Возобновить",
"sync_clock.add": "Добавить часы",
"sync_clock.created": "Часы синхронизации созданы",
"sync_clock.delete.confirm": "Удалить эти часы синхронизации? Привязанные источники потеряют синхронизацию и будут работать на скорости по умолчанию.",
"sync_clock.deleted": "Часы синхронизации удалены",
"sync_clock.description": "Описание (необязательно):",
"sync_clock.description.hint": "Необязательные заметки о назначении этих часов",
"sync_clock.description.placeholder": "Необязательное описание",
"sync_clock.edit": "Редактировать часы",
"sync_clock.elapsed": "Прошло времени",
"sync_clock.error.load": "Не удалось загрузить часы синхронизации",
"sync_clock.error.name_required": "Название часов обязательно",
"sync_clock.group.title": "Часы синхронизации",
"sync_clock.name": "Название:",
"sync_clock.name.hint": "Описательное название для этих часов синхронизации",
"sync_clock.name.placeholder": "Основные часы анимации",
"sync_clock.paused": "Часы приостановлены",
"sync_clock.reset_done": "Часы сброшены на ноль",
"sync_clock.resumed": "Часы возобновлены",
"sync_clock.speed": "Скорость:",
"sync_clock.speed.hint": "Множитель скорости анимации для всех привязанных источников. 1.0 = обычная, 2.0 = двойная, 0.5 = половинная.",
"sync_clock.status.paused": "Приостановлено",
"sync_clock.status.running": "Работает",
"sync_clock.updated": "Часы синхронизации обновлены",
"tags.hint": "Назначьте теги для группировки и фильтрации карточек",
"tags.label": "Теги",
"tags.placeholder": "Добавить тег...",
"target.error.clone_failed": "Не удалось клонировать цель",
"target.error.delete_failed": "Не удалось удалить цель",
"target.error.editor_open_failed": "Не удалось открыть редактор цели",
"target.error.load_failed": "Не удалось загрузить цель",
"target.error.start_failed": "Не удалось запустить цель",
"target.error.stop_failed": "Не удалось остановить цель",
"targets.adaptive_fps": "Адаптивный FPS:",
"targets.adaptive_fps.hint": "Автоматически снижает частоту отправки, когда устройство перестаёт отвечать, и постепенно восстанавливает её при стабилизации. Рекомендуется для WiFi-устройств со слабым сигналом.",
"targets.add": "Добавить Цель",
"targets.border_width": "Ширина границы (px):",
"targets.border_width.hint": "Сколько пикселей от края экрана выбирать для цвета LED (1-100)",
"targets.brightness": "Яркость:",
"targets.brightness.hint": "Множитель яркости (0–1). Можно привязать к источнику значений для динамического управления.",
"targets.brightness_vs": "Источник яркости:",
"targets.brightness_vs.hint": "Необязательный источник значений для динамического управления яркостью каждый кадр (переопределяет яркость устройства)",
"targets.brightness_vs.none": "Нет (яркость устройства)",
"targets.button.start": "Запустить",
"targets.button.stop": "Остановить",
"targets.color_strip_source": "Источник цветовой полосы:",
"targets.color_strip_source.hint": "Выберите источник цветовой полосы, который предоставляет цвета LED для этой цели",
"targets.created": "Цель успешно создана",
"targets.delete.confirm": "Вы уверены, что хотите удалить эту цель?",
"targets.deleted": "Цель успешно удалена",
"targets.description": "Цели связывают источники цветовых полос с устройствами вывода. Каждая цель ссылается на устройство и источник цветовой полосы.",
"targets.device": "Устройство:",
"targets.device.hint": "Выберите LED устройство для передачи данных",
"targets.device.none": "-- Выберите устройство --",
"targets.edit": "Редактировать Цель",
"targets.error.delete": "Не удалось удалить цель",
"targets.error.load": "Не удалось загрузить цели",
"targets.error.name_required": "Введите название цели",
"targets.error.required": "Пожалуйста, заполните все обязательные поля",
"targets.failed": "Не удалось загрузить цели",
"targets.fps": "Целевой FPS:",
"targets.fps.hint": "Целевая частота кадров для захвата и обновления LED (1-90)",
"targets.fps.rec": "Макс. аппаратный ≈ {fps} fps ({leds} LED)",
"targets.interpolation": "Режим интерполяции:",
"targets.interpolation.average": "Среднее",
"targets.interpolation.dominant": "Доминантный",
"targets.interpolation.hint": "Как вычислять цвет LED из выбранных пикселей",
"targets.interpolation.median": "Медиана",
"targets.keepalive_interval": "Интервал поддержания связи:",
"targets.keepalive_interval.hint": "Как часто повторно отправлять последний кадр при статичном источнике для удержания устройства в режиме live (0.5-5.0с)",
"targets.loading": "Загрузка целей...",
"targets.metrics.actual_fps": "Факт. FPS",
"targets.metrics.errors": "Ошибки",
"targets.metrics.frames": "Кадры",
"targets.metrics.target_fps": "Целев. FPS",
"targets.min_brightness_threshold": "Мин. порог яркости:",
"targets.min_brightness_threshold.hint": "Если итоговая яркость (яркость пикселей × яркость устройства/источника) ниже этого значения, светодиоды полностью выключаются (0 = отключено)",
"targets.name": "Имя Цели:",
"targets.name.placeholder": "Моя Цель",
"targets.no_css": "Нет источника",
"targets.none": "Цели не настроены",
"targets.power_limit": "Макс. ток (ABL):",
"targets.power_limit.hint": "Ограничивает расчётный ток ленты бюджетом блока питания, чтобы избежать просадок напряжения (сдвиг цвета, мерцание, перезагрузки) на ярких/белых сценах. Укажите номинальный ток вашего БП с запасом. 0 = без ограничения.",
"targets.power_limit.ma_suffix": "мА (0 = без ограничения)",
"targets.power_limit.per_led": "мА на светодиод (полный белый):",
"targets.protocol": "Протокол:",
"targets.protocol.ddp": "DDP (UDP)",
"targets.protocol.ddp.desc": "Быстрые UDP-пакеты — рекомендуется",
"targets.protocol.hint": "DDP отправляет пиксели по быстрому UDP (рекомендуется). HTTP использует JSON API — медленнее, но надёжнее, ограничение ~500 LED.",
"targets.protocol.http": "HTTP",
"targets.protocol.http.desc": "JSON API — медленнее, ≤500 LED",
"targets.protocol.serial": "Serial",
"targets.protocol.udp": "WLED UDP (realtime)",
"targets.protocol.udp.desc": "Нативный realtime WLED — корректный RGBW и авто-возврат при обрыве потока",
"targets.section.advanced": "Расширенные",
"targets.section.color_strips": "Источники цветовых полос",
"targets.section.devices": "Устройства",
"targets.section.pattern_templates": "Шаблоны Паттернов",
"targets.section.specific_settings": "Специальные настройки",
"targets.section.targets": "Цели",
"targets.smoothing": "Сглаживание:",
"targets.smoothing.hint": "Временное смешивание между кадрами (0=нет, 1=полное). Уменьшает мерцание.",
"targets.source": "Источник:",
"targets.source.hint": "Какой источник изображения захватывать и обрабатывать",
"targets.source.none": "-- Источник не назначен --",
"targets.status.error": "Ошибка",
"targets.status.idle": "Ожидание",
"targets.status.processing": "Обработка",
"targets.stop_all.button": "Остановить все",
"targets.stop_all.error": "Не удалось остановить цели",
"targets.stop_all.none_running": "Нет запущенных целей",
"targets.stop_all.stopped": "Остановлено целей: {count}",
"targets.subtab.led": "LED",
"targets.subtab.wled": "LED",
"targets.title": "Каналы",
"targets.updated": "Цель успешно обновлена",
"templates.add": "Добавить Шаблон Движка",
"templates.config": "Конфигурация",
"templates.config.camera_backend.auto": "Автовыбор лучшего бэкенда",
"templates.config.camera_backend.dshow": "Windows DirectShow",
"templates.config.camera_backend.msmf": "Windows Media Foundation",
"templates.config.camera_backend.v4l2": "Linux Video4Linux2",
"templates.config.default": "По умолчанию",
"templates.config.none": "Нет дополнительных настроек",
"templates.config.resolution.1080p": "Full HD",
"templates.config.resolution.1440p": "QHD / 2K",
"templates.config.resolution.2160p": "4K UHD — максимум CPU и трафика",
"templates.config.resolution.480p": "VGA — минимум CPU и трафика",
"templates.config.resolution.720p": "HD",
"templates.config.resolution.auto": "Открыть в максимальном поддерживаемом разрешении камеры",
"templates.config.show": "Показать конфигурацию",
"templates.created": "Шаблон успешно создан",
"templates.delete.confirm": "Вы уверены, что хотите удалить этот шаблон?",
"templates.deleted": "Шаблон успешно удалён",
"templates.description": "Шаблоны захвата определяют, как захватывается экран. Каждый шаблон использует определённый движок захвата (MSS, DXcam, WGC) с настраиваемыми параметрами. Назначайте шаблоны устройствам для оптимальной производительности.",
"templates.description.label": "Описание (необязательно):",
"templates.description.placeholder": "Опишите этот шаблон...",
"templates.edit": "Редактировать Шаблон Движка",
"templates.empty": "Шаблоны захвата не настроены",
"templates.engine": "Движок Захвата:",
"templates.engine.android_camera.desc": "Захват камеры устройства (Camera2)",
"templates.engine.bettercam.desc": "DirectX, высокая производительность",
"templates.engine.camera.desc": "Захват USB/IP камеры",
"templates.engine.demo.desc": "Тестовый анимированный шаблон (демо)",
"templates.engine.dxcam.desc": "DirectX, низкая задержка",
"templates.engine.hint": "Выберите технологию захвата экрана",
"templates.engine.mediaprojection.desc": "Нативный захват экрана Android",
"templates.engine.mss.desc": "Кроссплатформенный, чистый Python",
"templates.engine.scrcpy.desc": "Зеркалирование экрана Android (adb screencap)",
"templates.engine.scrcpy_client.desc": "Android H.264 поток, высокая частота",
"templates.engine.select": "Выберите движок...",
"templates.engine.unavailable": "Недоступен",
"templates.engine.unavailable.hint": "Этот движок недоступен в вашей системе",
"templates.engine.wgc.desc": "Windows Graphics Capture",
"templates.error.delete": "Не удалось удалить шаблон",
"templates.error.engines": "Не удалось загрузить движки",
"templates.error.load": "Не удалось загрузить шаблоны",
"templates.error.load_failed": "Не удалось загрузить шаблон",
"templates.error.required": "Пожалуйста, заполните все обязательные поля",
"templates.error.save_failed": "Не удалось сохранить шаблон",
"templates.loading": "Загрузка шаблонов...",
"templates.name": "Имя Шаблона:",
"templates.name.placeholder": "Мой Пользовательский Шаблон",
"templates.test.border_width": "Ширина Границы (px):",
"templates.test.description": "Протестируйте этот шаблон перед сохранением, чтобы увидеть предпросмотр захвата и метрики производительности.",
"templates.test.device": "Устройство:",
"templates.test.device.select": "Выберите устройство...",
"templates.test.display": "Дисплей:",
"templates.test.display.select": "Выберите дисплей...",
"templates.test.duration": "Длительность Захвата (с):",
"templates.test.error.failed": "Тест не удался",
"templates.test.error.no_device": "Пожалуйста, выберите устройство",
"templates.test.error.no_display": "Пожалуйста, выберите дисплей",
"templates.test.error.no_engine": "Пожалуйста, выберите движок захвата",
"templates.test.results.actual_fps": "Факт. FPS",
"templates.test.results.avg_capture_time": "Средн. Захват",
"templates.test.results.borders": "Извлечение Границ",
"templates.test.results.bottom": "Снизу",
"templates.test.results.capture_time": "Захват",
"templates.test.results.duration": "Длительность",
"templates.test.results.extraction_time": "Извлечение",
"templates.test.results.frame_count": "Кадры",
"templates.test.results.left": "Слева",
"templates.test.results.max_fps": "Макс. FPS",
"templates.test.results.performance": "Производительность",
"templates.test.results.preview": "Полный Предпросмотр Захвата",
"templates.test.results.resolution": "Разрешение:",
"templates.test.results.right": "Справа",
"templates.test.results.top": "Сверху",
"templates.test.results.total_time": "Всего",
"templates.test.run": "Запустить",
"templates.test.running": "Выполняется тест...",
"templates.test.title": "Тест Захвата",
"templates.title": "Шаблоны Движков",
"templates.updated": "Шаблон успешно обновлён",
"test.avg_capture": "Сред",
"test.fps": "Кадр/с",
"test.frames": "Кадры",
"theme.switched.dark": "Переключено на тёмную тему",
"theme.switched.light": "Переключено на светлую тему",
"theme.switched.system": "Переключено на системную тему",
"theme.toggle": "Переключить тему",
"time.days_ago": "{n} дн. назад",
"time.hours_ago": "{n} ч. назад",
"time.just_now": "только что",
"time.minutes_ago": "{n} мин. назад",
"time.seconds_ago": "{n} сек. назад",
"time.today": "Сегодня",
"time.yesterday": "Вчера",
"tour.accent": "Цвет акцента — настройте цвет интерфейса по своему вкусу.",
"tour.activity_log": "Вкладка «Активность» — постоянный журнал всего, что делает LedGrab: изменения сущностей, авторизация, подключения устройств и системные действия. Используйте фильтры, поиск и экспорт в CSV или JSON.",
"tour.api": "API Документация — интерактивная документация REST API на базе Swagger.",
"tour.auto.add": "Нажмите + для создания новой автоматизации с условиями и сценой для активации.",
"tour.auto.card": "Каждая карточка показывает статус автоматизации, условия и кнопки управления.",
"tour.auto.list": "Автоматизации — автоматизируйте активацию сцен по времени, звуку или значениям.",
"tour.auto.scenes_add": "Нажмите + для захвата текущего состояния системы как нового пресета сцены.",
"tour.auto.scenes_card": "Каждая карточка сцены показывает количество целей/устройств. Нажмите для редактирования, перезахвата или активации.",
"tour.auto.scenes_list": "Сцены — сохранённые состояния системы, которые автоматизации могут активировать или вы можете применить вручную.",
"tour.automations": "Автоматизации — автоматизируйте переключение сцен по расписанию, звуку или значениям.",
"tour.dash.automations": "Автоматизации — статус активных автоматизаций и быстрое включение/выключение.",
"tour.dash.customize_btn": "Кнопка «Настроить» — открывает боковую панель, где можно изменить порядок секций, скрыть их или подстроить раскладку дашборда.",
"tour.dash.customize_global": "Глобальные настройки — ширина контента, уровень анимаций, режим производительности (system/app/both) и окно выборки графиков.",
"tour.dash.customize_panel": "Настройка дашборда — центр управления раскладкой. Изменения применяются мгновенно; закрытие — Esc или кнопка ×.",
"tour.dash.customize_perf_cells": "Ячейки производительности — выбирайте, какие метрики отображать в секции Performance, настраивайте ширину, окно выборки и шкалу Y.",
"tour.dash.customize_presets": "Пресеты — применяйте готовые раскладки (компактная, фокус, полная) одним кликом. Выбор пресета сбрасывает ручные настройки.",
"tour.dash.customize_sections": "Секции — перетаскивайте для смены порядка; «глаз» скрывает; «шеврон» делает секцию свёрнутой по умолчанию. Также для каждой секции можно выбрать плотность.",
"tour.dash.integrations": "Интеграции — статус подключения для Weather, Home Assistant и MQTT.",
"tour.dash.perf": "Производительность — графики FPS в реальном времени, метрики задержки и интервал опроса.",
"tour.dash.running": "Запущенные цели — метрики стриминга и быстрая остановка.",
"tour.dash.scenes": "Пресеты сцен — сохранённые состояния системы, применяются одним кликом.",
"tour.dash.stopped": "Остановленные цели — готовы к запуску одним нажатием.",
"tour.dash.sync_clocks": "Синхро-часы — общие таймеры для синхронизации анимаций между источниками.",
"tour.dash.targets": "Каналы — все ваши цели в одном месте, разделённые на запущенные и остановленные.",
"tour.dashboard": "Дашборд — обзор запущенных целей, автоматизаций и состояния устройств.",
"tour.graph": "Граф — визуальный обзор всех сущностей и их связей. Перетаскивайте порты для соединения, правый клик по связям для отключения.",
"tour.int.game": "Игры — реакция на игровые события (Minecraft, Hammer of God и др.) с активацией сцен и цветовых эффектов на основе состояния игры.",
"tour.int.home_assistant": "Home Assistant — подключение к экземпляру HA. Лампы, датчики и сущности становятся источниками значений и целями вывода.",
"tour.int.mqtt": "MQTT — подписывайтесь на топики брокера для передачи данных внешних датчиков, автоматизаций или удалённых триггеров в LedGrab.",
"tour.int.nav": "Используйте этот выпадающий список для переключения между типами интеграций: погода, Home Assistant, MQTT и игровые интеграции.",
"tour.int.weather": "Погода — получайте данные о погоде (температура, условия, прогноз) в виде источников значений для эффектов от окружающей среды.",
"tour.integrations": "Интеграции — подключайте внешние сервисы: погоду, Home Assistant, MQTT и игровые интеграции.",
"tour.language": "Язык — выберите предпочитаемый язык интерфейса.",
"tour.restart": "Запустить тур заново",
"tour.search": "Поиск — быстрый поиск и переход к любому объекту по Ctrl+K.",
"tour.settings": "Настройки — резервное копирование и восстановление конфигурации.",
"tour.sources": "Источники — управление шаблонами захвата, источниками изображений, звука и цветовых полос.",
"tour.src.audio": "Аудио — захват микрофона или системного звука и обработка через шаблоны для реактивных эффектов.",
"tour.src.color_strip": "Цветовые полосы — определяют, как области экрана сопоставляются с LED-сегментами.",
"tour.src.nav": "Используйте этот выпадающий список для переключения между типами источников — изображения, цветовые полосы, аудио, значения, синхронизация, ассеты.",
"tour.src.processed": "Обработка — применяйте эффекты: размытие, яркость, цветокоррекция.",
"tour.src.raw": "Raw — источники захвата экрана с ваших дисплеев.",
"tour.src.static": "Статичные изображения — тестируйте настройку с файлами изображений.",
"tour.src.sync": "Синхро-часы — общие таймеры для синхронизации анимаций между несколькими источниками.",
"tour.src.templates": "Шаблоны захвата — переиспользуемые конфигурации (разрешение, FPS, обрезка).",
"tour.src.value": "Источники значений — динамические числа или цвета, управляемые временем суток, аудио, системными метриками, сущностями Home Assistant, градиентами или расписаниями. Используются для анимации эффектов, модуляции цветовых полос и триггеров автоматизаций.",
"tour.targets": "Цели — добавляйте WLED-устройства, настраивайте LED-цели с захватом и калибровкой.",
"tour.tgt.css": "Цветовые полосы — определите, как области экрана соответствуют сегментам LED.",
"tour.tgt.devices": "Устройства — ваши LED-контроллеры, найденные в сети.",
"tour.tgt.ha_light_targets": "Цели HA-ламп — выберите лампу Home Assistant и источник цвета/значения для управления.",
"tour.tgt.nav": "Используйте этот выпадающий список для переключения между типами целей: LED-устройства, LED-цели и лампы Home Assistant.",
"tour.tgt.targets": "LED-цели — объедините устройство, цветовую полосу и источник захвата для стриминга.",
"tour.theme": "Тема — переключение между тёмной и светлой темой.",
"tour.welcome": "Добро пожаловать в LED Grab! Этот краткий тур познакомит вас с интерфейсом. Используйте стрелки или кнопки для навигации.",
"transport.meta.cpu": "CPU",
"transport.meta.mem": "Память",
"transport.meta.poll": "Опрос",
"transport.meta.poll_hint": "Интервал опроса (клик: 1с → 2с → 5с → 10с)",
"transport.meta.uptime": "Время",
"transport.status.armed": "Активно · {n}",
"transport.status.ready": "Готов",
"tree.group.audio": "Аудио",
"tree.group.audio_capture": "Захват",
"tree.group.audio_processed": "Обработка",
"tree.group.capture": "Захват экрана",
"tree.group.game": "Игры",
"tree.group.picture": "Источники изображений",
"tree.group.processing": "Обработанные",
"tree.group.static": "Статичные",
"tree.group.strip": "Цветовые полосы",
"tree.group.utility": "Утилиты",
"tree.leaf.engine_templates": "Шаблоны движка",
"tree.leaf.filter_templates": "Шаблоны фильтров",
"tree.leaf.images": "Изображения",
"tree.leaf.processing_templates": "Шаблоны обработки",
"tree.leaf.sources": "Источники",
"tree.leaf.templates": "Шаблоны",
"tree.leaf.video": "Видео",
"update.apply_confirm": "Скачать и установить версию {version}? Сервер будет перезапущен автоматически.",
"update.apply_error": "Ошибка обновления",
"update.apply_now": "Обновить сейчас",
"update.applying": "Применяется обновление…",
"update.assets.desc.android": "Android — sideload на Android 7.0+",
"update.assets.desc.android_bundle": "Android App Bundle (Play Store)",
"update.assets.desc.archive": "Сжатый архив",
"update.assets.desc.ios": "Приложение iOS",
"update.assets.desc.linux_appimage": "Linux portable — один исполняемый файл",
"update.assets.desc.linux_deb": "Пакет Debian / Ubuntu",
"update.assets.desc.linux_rpm": "Пакет Fedora / RHEL",
"update.assets.desc.linux_sandbox": "Sandbox-пакет Linux",
"update.assets.desc.linux_tarball": "Архив Linux — распакуйте и запустите ./run.sh",
"update.assets.desc.macos_dmg": "Образ диска macOS — перетащите в «Программы»",
"update.assets.desc.macos_installer": "Установщик macOS",
"update.assets.desc.tarball": "Tar-архив",
"update.assets.desc.windows_exe": "Исполняемый файл Windows",
"update.assets.desc.windows_installer": "Установщик Windows — ярлык в меню «Пуск», опциональный автозапуск, деинсталлятор",
"update.assets.desc.windows_msi": "MSI-установщик Windows",
"update.assets.desc.windows_portable": "Windows portable — распакуйте в любую папку и запустите LedGrab.bat",
"update.assets.desc.zip_archive": "Архив ZIP",
"update.assets.title": "Загрузки",
"update.auto_check_hint": "Периодически проверять наличие новых версий в фоновом режиме.",
"update.auto_check_label": "Автоматическая проверка",
"update.available": "Доступна версия {version}",
"update.badge_tooltip": "Доступна новая версия — нажмите для подробностей",
"update.channel.prerelease": "Пре-релиз",
"update.channel.prerelease_desc": "Включая альфа, бета и RC сборки",
"update.channel.stable": "Стабильный",
"update.channel.stable_desc": "Только стабильные релизы",
"update.channel_label": "Канал",
"update.check_error": "Ошибка проверки обновлений",
"update.check_now": "Проверить обновления",
"update.current_version": "Текущая версия:",
"update.dismiss": "Скрыть",
"update.downloading": "Загрузка…",
"update.enable": "Включить автопроверку",
"update.install_type.dev": "Разработка",
"update.install_type.docker": "Docker",
"update.install_type.installer": "Установщик Windows",
"update.install_type.portable": "Портативная",
"update.install_type_label": "Тип установки:",
"update.interval_label": "Интервал проверки",
"update.last_check": "Последняя проверка",
"update.never": "никогда",
"update.pill.available": "ДОСТУПНО ОБНОВЛЕНИЕ",
"update.pill.error": "ОШИБКА",
"update.pill.updated": "АКТУАЛЬНО",
"update.prerelease": "пре-релиз",
"update.release_notes": "Примечания к релизу",
"update.release_notes_hint": "Что нового в доступной версии — прочитайте список изменений перед применением.",
"update.release_notes_open": "Открыть",
"update.save_settings": "Сохранить настройки",
"update.settings_save_error": "Не удалось сохранить настройки обновлений",
"update.settings_saved": "Настройки обновлений сохранены",
"update.status_label": "Статус обновления",
"update.up_to_date": "Установлена последняя версия",
"update.view_release": "Подробнее",
"update.view_release_notes": "Открыть примечания к релизу",
"validation.required": "Обязательное поле",
"value_source.adaptive_max_value": "Макс. значение:",
"value_source.adaptive_max_value.hint": "Максимальная выходная яркость",
"value_source.adaptive_min_value": "Мин. значение:",
"value_source.adaptive_min_value.hint": "Минимальная выходная яркость",
"value_source.add": "Добавить источник значений",
"value_source.audio_max_value": "Макс. значение:",
"value_source.audio_max_value.hint": "Выход при максимальном уровне звука",
"value_source.audio_min_value": "Мин. значение:",
"value_source.audio_min_value.hint": "Выход при тишине (напр. 0.3 = минимум 30% яркости)",
"value_source.audio_source": "Аудиоисточник:",
"value_source.audio_source.hint": "Аудиоисточник для считывания уровня звука",
"value_source.auto_gain": "Авто-усиление:",
"value_source.auto_gain.enable": "Включить авто-усиление",
"value_source.auto_gain.hint": "Автоматически нормализует уровни звука, чтобы выходное значение использовало полный диапазон независимо от громкости входного сигнала",
"value_source.created": "Источник значений создан",
"value_source.daylight.enable_real_time": "Следовать за часами",
"value_source.daylight.latitude": "Широта:",
"value_source.daylight.latitude.hint": "Географическая широта (-90 до 90). Делает переходы рассвета и заката круче или плавнее.",
"value_source.daylight.longitude": "Долгота:",
"value_source.daylight.longitude.hint": "Географическая долгота (-180 до 180). Сдвигает солнечный полдень для точного совпадения восхода и заката с настенными часами.",
"value_source.daylight.real_time": "Реальное время",
"value_source.daylight.speed": "Скорость:",
"value_source.daylight.speed.hint": "Множитель скорости цикла. 1.0 = полный цикл день/ночь за ~4 минуты.",
"value_source.daylight.speed_label": "Скорость",
"value_source.daylight.use_real_time": "Реальное время:",
"value_source.daylight.use_real_time.hint": "Значение следует за реальным временем суток. Скорость игнорируется.",
"value_source.delete.confirm": "Удалить этот источник значений?",
"value_source.deleted": "Источник значений удалён",
"value_source.description": "Описание (необязательно):",
"value_source.description.hint": "Необязательные заметки об этом источнике значений",
"value_source.description.placeholder": "Опишите этот источник значений...",
"value_source.edit": "Редактировать источник значений",
"value_source.error.load": "Не удалось загрузить источник значений",
"value_source.error.name_required": "Введите название",
"value_source.error.schedule_min": "Расписание требует минимум 2 временные точки",
"value_source.game_event.default_value": "Значение по умолчанию:",
"value_source.game_event.default_value.hint": "Выходное значение, когда события не поступают в пределах таймаута.",
"value_source.game_event.event_type": "Тип события:",
"value_source.game_event.event_type.hint": "Непрерывное игровое событие (здоровье, мана, патроны и т.д.).",
"value_source.game_event.integration": "Игровая интеграция:",
"value_source.game_event.integration.hint": "Выберите игровую интеграцию для этого источника значений.",
"value_source.game_event.max_game_value": "Макс. игровое значение:",
"value_source.game_event.max_game_value.hint": "Исходное игровое значение, соответствующее 1.0.",
"value_source.game_event.min_game_value": "Мин. игровое значение:",
"value_source.game_event.min_game_value.hint": "Исходное игровое значение, соответствующее 0.0.",
"value_source.game_event.smoothing": "Сглаживание:",
"value_source.game_event.smoothing.hint": "Коэффициент EMA-сглаживания. 0 = мгновенно, выше = плавнее.",
"value_source.game_event.timeout": "Таймаут (с):",
"value_source.game_event.timeout.hint": "Секунды тишины до возврата к значению по умолчанию.",
"value_source.group.title": "Источники значений",
"value_source.http.endpoint": "HTTP-эндпоинт:",
"value_source.http.endpoint.hint": "Выберите сохранённый эндпоинт во вкладке HTTP-интеграций.",
"value_source.http.endpoint_required": "Требуется HTTP-эндпоинт",
"value_source.http.interval": "Интервал (с):",
"value_source.http.interval.hint": "Период опроса в секундах. Несколько источников могут использовать один эндпоинт с разными интервалами.",
"value_source.http.interval_invalid": "Интервал должен быть не меньше 1 секунды",
"value_source.http.json_path": "JSON-путь:",
"value_source.http.json_path.hint": "Пусто = использовать необработанное тело ответа. Используйте путь с точками и индексами, например MediaContainer.Metadata[0].title",
"value_source.http.max_value": "Макс. значение:",
"value_source.http.max_value.hint": "Извлечённое значение, которое отображается в выход 1.0 (для нормализации).",
"value_source.http.min_value": "Мин. значение:",
"value_source.http.min_value.hint": "Извлечённое значение, которое отображается в выход 0.0 (для нормализации).",
"value_source.http.modulator.hint": "Используется только когда этот источник управляет яркостью или цветом. Правила автоматизации читают извлечённое значение в исходном виде и игнорируют эти настройки.",
"value_source.http.modulator.summary": "Сопоставление для модулятора (необязательно)",
"value_source.max_value": "Макс. значение:",
"value_source.max_value.hint": "Максимальный выход цикла волны",
"value_source.min_value": "Мин. значение:",
"value_source.min_value.hint": "Минимальный выход цикла волны",
"value_source.mode": "Режим:",
"value_source.mode.beat": "Бит",
"value_source.mode.beat.desc": "Детекция ритмических ударов",
"value_source.mode.hint": "RMS измеряет среднюю громкость. Пик отслеживает самые громкие моменты. Бит реагирует на ритм.",
"value_source.mode.peak": "Пик",
"value_source.mode.peak.desc": "Отслеживание пиковых моментов",
"value_source.mode.rms": "RMS (Громкость)",
"value_source.mode.rms.desc": "Средний уровень громкости",
"value_source.name": "Название:",
"value_source.name.hint": "Описательное имя для этого источника значений",
"value_source.name.placeholder": "Пульс яркости",
"value_source.normalize": "Нормализовать в 0–1:",
"value_source.normalize.hint": "Вкл.: масштабировать сырое значение в 0–1 по Min/Max. Выкл.: значение ограничивается диапазоном 0–1 как есть (для источников, уже выдающих долю 0–1). Сырое значение остаётся доступным в шаблонах (raw[name]) и автоматизациях.",
"value_source.picture_source": "Источник изображения:",
"value_source.picture_source.hint": "Источник изображения, кадры которого будут анализироваться на среднюю яркость.",
"value_source.scene_behavior": "Поведение:",
"value_source.scene_behavior.complement": "Дополнение (тёмный → ярко)",
"value_source.scene_behavior.hint": "Дополнение: тёмная сцена = высокая яркость (для фоновой подсветки). Совпадение: яркая сцена = высокая яркость.",
"value_source.scene_behavior.match": "Совпадение (яркий → ярко)",
"value_source.scene_sensitivity.hint": "Множитель усиления сигнала яркости (выше = более чувствительный к изменениям яркости)",
"value_source.schedule": "Расписание:",
"value_source.schedule.add": "+ Добавить точку",
"value_source.schedule.hint": "Определите минимум 2 временные точки. Яркость линейно интерполируется между ними, с переходом через полночь.",
"value_source.schedule.points": "точек",
"value_source.select_type": "Выберите тип источника значений",
"value_source.sensitivity": "Чувствительность:",
"value_source.sensitivity.hint": "Множитель усиления аудиосигнала (выше = более реактивный)",
"value_source.smoothing": "Сглаживание:",
"value_source.smoothing.hint": "Временное сглаживание (0 = мгновенный отклик, 1 = очень плавный/медленный)",
"value_source.speed": "Скорость (цикл/мин):",
"value_source.speed.hint": "Циклов в минуту — как быстро повторяется волна (1 = очень медленно, 120 = очень быстро)",
"value_source.template.add_input": "+ Добавить вход",
"value_source.template.default_value": "Значение по умолчанию:",
"value_source.template.default_value.hint": "Значение на выходе, когда выражение нельзя вычислить (например, отсутствует вход).",
"value_source.template.error.cycle": "Это выражение создало бы циклическую зависимость",
"value_source.template.error.duplicate_name": "Повторяющееся имя входа",
"value_source.template.error.invalid_expr": "Некорректное выражение",
"value_source.template.error.invalid_name": "Некорректное имя переменной",
"value_source.template.error.missing_input": "Каждому входу нужно имя переменной",
"value_source.template.error.reserved_name": "Зарезервированное имя нельзя использовать как вход",
"value_source.template.error.unbound": "Выражение ссылается на непривязанную переменную",
"value_source.template.eval_interval": "Интервал вычисления (с):",
"value_source.template.eval_interval.hint": "Как часто пересчитывать выражение. 0 = при каждом опросе (так быстро, как обновляются входы).",
"value_source.template.expression": "Выражение:",
"value_source.template.expression.hint": "Изолированное выражение Jinja, возвращающее число. Привязанные входы доступны по имени; используйте raw[name] для ненормализованного значения.",
"value_source.template.expression.placeholder": "clamp((temp - 18) / 10, 0, 1)",
"value_source.template.hints.examples_title": "Примеры",
"value_source.template.hints.globals": "min(a, b), max(a, b), abs(x), round(x), clamp(x, lo, hi)",
"value_source.template.hints.globals_title": "Глобальные функции",
"value_source.template.hints.inputs_title": "Привязанные входы",
"value_source.template.hints.no_inputs": "Входы ещё не привязаны",
"value_source.template.hints.raw": "raw[name] даёт ненормализованное значение входа, если оно есть.",
"value_source.template.hints.raw_title": "Исходные значения",
"value_source.template.hints.time": "Совет: для логики времени суток привяжите источник «Адаптивный (время)» или «Дневной цикл» как вход.",
"value_source.template.hints.title": "Справка по выражению",
"value_source.template.input_count": "входов",
"value_source.template.input_count_one": "вход",
"value_source.template.input_name": "имя переменной",
"value_source.template.inputs": "Входы:",
"value_source.template.inputs.empty": "Пока нет входов. Нажмите +, чтобы привязать источник значений.",
"value_source.template.inputs.hint": "Привяжите числовые источники значений к именам переменных, используемым в выражении.",
"value_source.template.valid": "Выражение корректно",
"value_source.test": "Тест",
"value_source.test.connecting": "Подключение...",
"value_source.test.current": "Текущее",
"value_source.test.error": "Не удалось подключиться",
"value_source.test.max": "Макс",
"value_source.test.min": "Мин",
"value_source.test.title": "Тест источника значений",
"value_source.type": "Тип:",
"value_source.type.adaptive_scene": "Адаптивный (Сцена)",
"value_source.type.adaptive_scene.desc": "Подстройка по содержимому сцены",
"value_source.type.adaptive_time": "Адаптивный (Время)",
"value_source.type.adaptive_time.desc": "Подстройка по времени суток",
"value_source.type.animated": "Анимированный",
"value_source.type.animated.desc": "Циклическая смена по форме волны",
"value_source.type.audio": "Аудио",
"value_source.type.audio.desc": "Реагирует на звуковой сигнал",
"value_source.type.daylight": "Дневной цикл",
"value_source.type.daylight.desc": "Значение следует циклу дня/ночи",
"value_source.type.game_event": "Игровое событие",
"value_source.type.game_event.desc": "Игровые метрики (здоровье, патроны, мана) как значения 0-1",
"value_source.type.hint": "Статический выдаёт постоянное значение. Анимированный циклически меняет форму волны. Аудио реагирует на звук. Адаптивные типы автоматически подстраивают яркость по времени суток или содержимому сцены.",
"value_source.type.http": "HTTP-опрос",
"value_source.type.http.desc": "Периодически опрашивает HTTP-эндпоинт и сопоставляет извлечённое значение с диапазоном 0–1.",
"value_source.type.static": "Статический",
"value_source.type.static.desc": "Постоянное выходное значение",
"value_source.type.template": "Шаблон Jinja",
"value_source.type.template.desc": "Объедините привязанные входы в изолированном выражении Jinja для вычисления значения 0-1.",
"value_source.updated": "Источник значений обновлён",
"value_source.value": "Значение:",
"value_source.value.hint": "Постоянное выходное значение (0.0 = выкл, 1.0 = полная яркость)",
"value_source.waveform": "Форма волны:",
"value_source.waveform.hint": "Форма цикла анимации яркости",
"value_source.waveform.sawtooth": "Пила",
"value_source.waveform.sine": "Синус",
"value_source.waveform.square": "Прямоугольник",
"value_source.waveform.triangle": "Треугольник",
"weather_source.add": "Добавить источник погоды",
"weather_source.created": "Источник погоды создан",
"weather_source.delete.confirm": "Удалить этот источник погоды? Связанные источники цветовых лент потеряют данные о погоде.",
"weather_source.deleted": "Источник погоды удалён",
"weather_source.description": "Описание (необязательно):",
"weather_source.description.placeholder": "Необязательное описание",
"weather_source.edit": "Редактировать источник погоды",
"weather_source.error.load": "Не удалось загрузить источник погоды",
"weather_source.error.name_required": "Название источника погоды обязательно",
"weather_source.geo.error": "Ошибка геолокации",
"weather_source.geo.not_supported": "Геолокация не поддерживается вашим браузером",
"weather_source.geo.success": "Местоположение определено",
"weather_source.group.title": "Источники погоды",
"weather_source.latitude": "Шир:",
"weather_source.location": "Местоположение:",
"weather_source.location.hint": "Географические координаты. Используйте автоопределение или введите вручную.",
"weather_source.longitude": "Долг:",
"weather_source.name": "Название:",
"weather_source.name.hint": "Описательное название источника погоды",
"weather_source.name.placeholder": "Моя погода",
"weather_source.provider": "Провайдер:",
"weather_source.provider.hint": "Провайдер метеоданных. Open-Meteo бесплатный и не требует API ключа.",
"weather_source.provider.open_meteo.desc": "Бесплатно, без API ключа",
"weather_source.test": "Тест",
"weather_source.update_interval": "Интервал обновления:",
"weather_source.update_interval.hint": "Частота запроса метеоданных. Меньше = более оперативные обновления.",
"weather_source.updated": "Источник погоды обновлён",
"weather_source.use_my_location": "Определить",
"weekday.short.0": "Пн",
"weekday.short.1": "Вт",
"weekday.short.2": "Ср",
"weekday.short.3": "Чт",
"weekday.short.4": "Пт",
"weekday.short.5": "Сб",
"weekday.short.6": "Вс",
"wizard.calibrate.desc": "Укажите, где начинается лента и как она проходит вокруг экрана.",
"wizard.calibrate.skip": "Пропустить калибровку",
"wizard.calibrate.title": "Калибровка ленты",
"wizard.device.desc": "Выполните сканирование сети или добавьте устройство вручную.",
"wizard.device.discovered": "Найдено в сети",
"wizard.device.existing": "Существующие устройства",
"wizard.device.manual.add": "Добавить устройство",
"wizard.device.manual.led_count": "Количество светодиодов",
"wizard.device.manual.name": "Имя устройства",
"wizard.device.manual.name_placeholder": "Моя LED-лента",
"wizard.device.manual.title": "Добавить вручную",
"wizard.device.manual.url": "Адрес устройства",
"wizard.device.none_found": "Устройства не найдены. Попробуйте добавить вручную.",
"wizard.device.rescan": "Повторить",
"wizard.device.scanning": "Сканирование сети…",
"wizard.device.title": "Найдите устройство",
"wizard.display.confirm": "Использовать этот экран",
"wizard.display.desc": "Укажите монитор для захвата подсветки.",
"wizard.display.index_prefix": "Дисплей",
"wizard.display.loading": "Загрузка дисплеев…",
"wizard.display.manual_index": "Индекс дисплея",
"wizard.display.no_displays": "Дисплеи не найдены. Введите индекс вручную.",
"wizard.display.primary": "Основной",
"wizard.display.title": "Выберите экран",
"wizard.done.desc": "Ваша подсветка активна. Наслаждайтесь!",
"wizard.done.device": "Устройство",
"wizard.done.display": "Экран",
"wizard.done.finish": "Завершить",
"wizard.done.title": "Готово!",
"wizard.error.device_create_failed": "Не удалось создать устройство.",
"wizard.error.device_name_required": "Введите имя устройства.",
"wizard.error.device_url_required": "Введите адрес устройства.",
"wizard.error.no_device": "Сначала выберите или добавьте устройство.",
"wizard.error.scaffold_failed": "Ошибка настройки. Попробуйте ещё раз.",
"wizard.error.start_failed": "Не удалось запустить LED-вывод.",
"wizard.modal.title": "Мастер настройки",
"wizard.rerun": "Запустить мастер настройки заново",
"wizard.scaffold.building": "Создание объектов…",
"wizard.scaffold.desc": "Создаём цепочку захвата: экран → цветовая лента → LED-выход.",
"wizard.scaffold.done": "Конфигурация создана! Готово к калибровке.",
"wizard.scaffold.title": "Создание конфигурации",
"wizard.skip": "Пропустить",
"wizard.start": "Начать",
"wizard.start.done": "LED-вывод работает!",
"wizard.start.failed": "Не удалось запустить. Запустите вручную на вкладке «Цели».",
"wizard.start.starting": "Запуск LED-вывода…",
"wizard.start.title": "Запуск вывода",
"wizard.step.calibrate": "Калибровка",
"wizard.step.device": "Устройство",
"wizard.step.display": "Экран",
"wizard.step.done": "Готово",
"wizard.step.scaffold": "Настройка",
"wizard.step.start": "Запуск",
"wizard.step.welcome": "Добро пожаловать",
"wizard.welcome.desc": "Настроим вашу LED-ленту за несколько шагов.",
"wizard.welcome.item1": "Подключите контроллер LED",
"wizard.welcome.item2": "Выберите экран для захвата",
"wizard.welcome.item3": "Откалибруйте расположение ленты",
"wizard.welcome.item4": "Запустите подсветку",
"wizard.welcome.title": "Добро пожаловать в LED Grab"
}