New match types for application conditions: - "fullscreen": app has a fullscreen window on any monitor (detected via EnumWindows, works even when another window is focused on a different display) - "topmost_fullscreen": app is the focused foreground window AND fullscreen Optimizes profile evaluation to only call expensive detection methods when needed: WMI process enumeration (~3s) is skipped when no condition uses "running" mode; foreground/fullscreen checks (<1ms each) are called selectively based on active match types. Filters false positives from fullscreen detection by excluding desktop/shell process windows, tool windows, and non-activatable overlay windows. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
517 lines
39 KiB
JSON
517 lines
39 KiB
JSON
{
|
||
"app.title": "LED Grab",
|
||
"app.version": "Версия:",
|
||
"app.api_docs": "Документация API",
|
||
"theme.toggle": "Переключить тему",
|
||
"locale.change": "Изменить язык",
|
||
"auth.login": "Войти",
|
||
"auth.logout": "Выйти",
|
||
"auth.authenticated": "● Авторизован",
|
||
"auth.title": "Вход в LED Grab",
|
||
"auth.message": "Пожалуйста, введите ваш API ключ для аутентификации и доступа к LED Grab.",
|
||
"auth.label": "API Ключ:",
|
||
"auth.placeholder": "Введите ваш API ключ...",
|
||
"auth.hint": "Ваш API ключ будет безопасно сохранен в локальном хранилище браузера.",
|
||
"auth.button.cancel": "Отмена",
|
||
"auth.button.login": "Войти",
|
||
"auth.error.required": "Пожалуйста, введите API ключ",
|
||
"auth.success": "Вход выполнен успешно!",
|
||
"auth.logout.confirm": "Вы уверены, что хотите выйти?",
|
||
"auth.logout.success": "Выход выполнен успешно",
|
||
"auth.please_login": "Пожалуйста, войдите для просмотра",
|
||
"auth.session_expired": "Ваша сессия истекла или API ключ недействителен. Пожалуйста, войдите снова.",
|
||
"displays.title": "Доступные Дисплеи",
|
||
"displays.layout": "\uD83D\uDDA5\uFE0F Дисплеи",
|
||
"displays.information": "Информация о Дисплеях",
|
||
"displays.legend.primary": "Основной Дисплей",
|
||
"displays.legend.secondary": "Вторичный Дисплей",
|
||
"displays.badge.primary": "Основной",
|
||
"displays.badge.secondary": "Вторичный",
|
||
"displays.resolution": "Разрешение:",
|
||
"displays.refresh_rate": "Частота Обновления:",
|
||
"displays.position": "Позиция:",
|
||
"displays.index": "Индекс Дисплея:",
|
||
"displays.loading": "Загрузка дисплеев...",
|
||
"displays.none": "Нет доступных дисплеев",
|
||
"displays.failed": "Не удалось загрузить дисплеи",
|
||
"displays.picker.title": "Выберите Дисплей",
|
||
"displays.picker.select": "Выберите дисплей...",
|
||
"displays.picker.click_to_select": "Нажмите, чтобы выбрать этот дисплей",
|
||
"templates.title": "\uD83D\uDCC4 Шаблоны Движков",
|
||
"templates.description": "Шаблоны захвата определяют, как захватывается экран. Каждый шаблон использует определённый движок захвата (MSS, DXcam, WGC) с настраиваемыми параметрами. Назначайте шаблоны устройствам для оптимальной производительности.",
|
||
"templates.loading": "Загрузка шаблонов...",
|
||
"templates.empty": "Шаблоны захвата не настроены",
|
||
"templates.add": "Добавить Шаблон Движка",
|
||
"templates.edit": "Редактировать Шаблон Движка",
|
||
"templates.name": "Имя Шаблона:",
|
||
"templates.name.placeholder": "Мой Пользовательский Шаблон",
|
||
"templates.description.label": "Описание (необязательно):",
|
||
"templates.description.placeholder": "Опишите этот шаблон...",
|
||
"templates.engine": "Движок Захвата:",
|
||
"templates.engine.hint": "Выберите технологию захвата экрана",
|
||
"templates.engine.select": "Выберите движок...",
|
||
"templates.engine.unavailable": "Недоступен",
|
||
"templates.engine.unavailable.hint": "Этот движок недоступен в вашей системе",
|
||
"templates.config": "Конфигурация",
|
||
"templates.config.show": "Показать конфигурацию",
|
||
"templates.config.none": "Нет дополнительных настроек",
|
||
"templates.config.default": "По умолчанию",
|
||
"templates.created": "Шаблон успешно создан",
|
||
"templates.updated": "Шаблон успешно обновлён",
|
||
"templates.deleted": "Шаблон успешно удалён",
|
||
"templates.delete.confirm": "Вы уверены, что хотите удалить этот шаблон?",
|
||
"templates.error.load": "Не удалось загрузить шаблоны",
|
||
"templates.error.engines": "Не удалось загрузить движки",
|
||
"templates.error.required": "Пожалуйста, заполните все обязательные поля",
|
||
"templates.error.delete": "Не удалось удалить шаблон",
|
||
"templates.test.title": "Тест Захвата",
|
||
"templates.test.description": "Протестируйте этот шаблон перед сохранением, чтобы увидеть предпросмотр захвата и метрики производительности.",
|
||
"templates.test.display": "Дисплей:",
|
||
"templates.test.display.select": "Выберите дисплей...",
|
||
"templates.test.duration": "Длительность Захвата (с):",
|
||
"templates.test.border_width": "Ширина Границы (px):",
|
||
"templates.test.run": "\uD83E\uDDEA Запустить",
|
||
"templates.test.running": "Выполняется тест...",
|
||
"templates.test.results.preview": "Полный Предпросмотр Захвата",
|
||
"templates.test.results.borders": "Извлечение Границ",
|
||
"templates.test.results.top": "Сверху",
|
||
"templates.test.results.right": "Справа",
|
||
"templates.test.results.bottom": "Снизу",
|
||
"templates.test.results.left": "Слева",
|
||
"templates.test.results.performance": "Производительность",
|
||
"templates.test.results.capture_time": "Захват",
|
||
"templates.test.results.extraction_time": "Извлечение",
|
||
"templates.test.results.total_time": "Всего",
|
||
"templates.test.results.max_fps": "Макс. FPS",
|
||
"templates.test.results.duration": "Длительность",
|
||
"templates.test.results.frame_count": "Кадры",
|
||
"templates.test.results.actual_fps": "Факт. FPS",
|
||
"templates.test.results.avg_capture_time": "Средн. Захват",
|
||
"templates.test.error.no_engine": "Пожалуйста, выберите движок захвата",
|
||
"templates.test.error.no_display": "Пожалуйста, выберите дисплей",
|
||
"templates.test.error.failed": "Тест не удался",
|
||
"devices.title": "\uD83D\uDCA1 Устройства",
|
||
"devices.add": "Добавить Новое Устройство",
|
||
"devices.loading": "Загрузка устройств...",
|
||
"devices.none": "Устройства не настроены",
|
||
"devices.failed": "Не удалось загрузить устройства",
|
||
"devices.wled_config": "Конфигурация WLED:",
|
||
"devices.wled_note": "Настройте ваше WLED устройство (эффекты, сегменты, порядок цветов, ограничения питания и т.д.) используя",
|
||
"devices.wled_link": "официальное приложение WLED",
|
||
"devices.wled_note_or": "или встроенный",
|
||
"devices.wled_webui_link": "веб-интерфейс WLED",
|
||
"devices.wled_note_webui": "(откройте IP устройства в браузере).",
|
||
"devices.wled_note2": "Этот контроллер отправляет данные о цвете пикселей и управляет яркостью для каждого устройства.",
|
||
"device.scan": "Автопоиск",
|
||
"device.scan.empty": "Устройства не найдены",
|
||
"device.scan.error": "Ошибка сканирования сети",
|
||
"device.scan.already_added": "Уже добавлено",
|
||
"device.scan.selected": "Устройство выбрано",
|
||
"device.type": "Тип устройства:",
|
||
"device.type.hint": "Выберите тип LED контроллера",
|
||
"device.serial_port": "Серийный порт:",
|
||
"device.serial_port.hint": "Выберите COM порт устройства Adalight",
|
||
"device.serial_port.none": "Серийные порты не найдены",
|
||
"device.led_count_manual.hint": "Количество светодиодов на ленте (должно совпадать с вашим скетчем Arduino)",
|
||
"device.baud_rate": "Скорость порта:",
|
||
"device.baud_rate.hint": "Скорость серийного соединения. Выше = больше FPS, но требует соответствия скетчу Arduino.",
|
||
"device.url.hint": "IP адрес или имя хоста устройства (напр. http://192.168.1.100)",
|
||
"device.name": "Имя Устройства:",
|
||
"device.name.placeholder": "ТВ в Гостиной",
|
||
"device.url": "URL:",
|
||
"device.url.placeholder": "http://192.168.1.100",
|
||
"device.led_count": "Количество Светодиодов:",
|
||
"device.led_count.hint": "Количество светодиодов, настроенных в устройстве",
|
||
"device.led_count.hint.auto": "Автоматически определяется из устройства",
|
||
"device.button.add": "Добавить Устройство",
|
||
"device.button.start": "Запустить",
|
||
"device.button.stop": "Остановить",
|
||
"device.button.settings": "Основные настройки",
|
||
"device.button.capture_settings": "Настройки захвата",
|
||
"device.button.calibrate": "Калибровка",
|
||
"device.button.remove": "Удалить",
|
||
"device.button.webui": "Открыть веб-интерфейс устройства",
|
||
"device.button.power_toggle": "Вкл/Выкл",
|
||
"device.power.on_success": "Устройство включено",
|
||
"device.power.off_success": "Устройство выключено",
|
||
"device.status.connected": "Подключено",
|
||
"device.status.disconnected": "Отключено",
|
||
"device.status.error": "Ошибка",
|
||
"device.status.processing": "Обработка",
|
||
"device.status.idle": "Ожидание",
|
||
"device.fps": "FPS:",
|
||
"device.display": "Дисплей:",
|
||
"device.remove.confirm": "Вы уверены, что хотите удалить это устройство?",
|
||
"device.added": "Устройство успешно добавлено",
|
||
"device.removed": "Устройство успешно удалено",
|
||
"device.started": "Обработка запущена",
|
||
"device.stopped": "Обработка остановлена",
|
||
"device.metrics.actual_fps": "Факт. FPS",
|
||
"device.metrics.current_fps": "Текущ. FPS",
|
||
"device.metrics.target_fps": "Целев. FPS",
|
||
"device.metrics.potential_fps": "Потенц. FPS",
|
||
"device.metrics.frames": "Кадры",
|
||
"device.metrics.frames_skipped": "Пропущено",
|
||
"device.metrics.keepalive": "Keepalive",
|
||
"device.metrics.errors": "Ошибки",
|
||
"device.metrics.timing": "Тайминг пайплайна:",
|
||
"device.metrics.device_fps": "Частота обновления устройства",
|
||
"device.health.online": "Онлайн",
|
||
"device.health.offline": "Недоступен",
|
||
"device.health.checking": "Проверка...",
|
||
"device.static_color": "Цвет ожидания",
|
||
"device.static_color.hint": "Цвет, когда устройство в режиме ожидания",
|
||
"device.static_color.clear": "Очистить цвет ожидания",
|
||
"device.tutorial.start": "Начать обучение",
|
||
"device.tip.metadata": "Информация об устройстве (кол-во LED, тип, цветовые каналы) определяется автоматически",
|
||
"device.tip.brightness": "Перетащите для регулировки яркости",
|
||
"device.tip.start": "Запуск или остановка захвата экрана",
|
||
"device.tip.settings": "Основные настройки устройства (имя, URL, интервал проверки)",
|
||
"device.tip.capture_settings": "Настройки захвата (дисплей, шаблон захвата)",
|
||
"device.tip.calibrate": "Калибровка позиций LED, направления и зоны покрытия",
|
||
"device.tip.webui": "Открыть встроенный веб-интерфейс устройства для расширенной настройки",
|
||
"device.tip.add": "Нажмите, чтобы добавить новое LED устройство",
|
||
"settings.title": "Настройки Устройства",
|
||
"settings.general.title": "Основные Настройки",
|
||
"settings.capture.title": "Настройки Захвата",
|
||
"settings.capture.saved": "Настройки захвата обновлены",
|
||
"settings.capture.failed": "Не удалось сохранить настройки захвата",
|
||
"settings.brightness": "Яркость:",
|
||
"settings.brightness.hint": "Общая яркость для этого устройства (0-100%)",
|
||
"settings.url.hint": "IP адрес или имя хоста устройства",
|
||
"settings.display_index": "Дисплей:",
|
||
"settings.display_index.hint": "Какой экран захватывать для этого устройства",
|
||
"settings.fps": "Целевой FPS:",
|
||
"settings.fps.hint": "Целевая частота кадров (10-90)",
|
||
"settings.capture_template": "Шаблон Движка:",
|
||
"settings.capture_template.hint": "Движок захвата экрана и конфигурация для этого устройства",
|
||
"settings.button.cancel": "Отмена",
|
||
"settings.health_interval": "Интервал Проверки (с):",
|
||
"settings.health_interval.hint": "Как часто проверять статус устройства (5-600 секунд)",
|
||
"settings.auto_shutdown": "Авто-восстановление:",
|
||
"settings.auto_shutdown.hint": "Восстанавливать устройство в режим ожидания при остановке целей или сервера",
|
||
"settings.button.save": "Сохранить Изменения",
|
||
"settings.saved": "Настройки успешно сохранены",
|
||
"settings.failed": "Не удалось сохранить настройки",
|
||
"calibration.title": "Калибровка Светодиодов",
|
||
"calibration.tip.led_count": "Укажите количество LED на каждой стороне",
|
||
"calibration.tip.start_corner": "Нажмите на угол для выбора стартовой позиции",
|
||
"calibration.tip.direction": "Переключение направления ленты (по часовой / против часовой)",
|
||
"calibration.tip.offset": "Смещение LED — расстояние от LED 0 до стартового угла",
|
||
"calibration.tip.span": "Перетащите зелёные полосы для настройки зоны покрытия",
|
||
"calibration.tip.test": "Нажмите на край для теста LED",
|
||
"calibration.tip.toggle_inputs": "Нажмите на общее количество LED для скрытия боковых полей",
|
||
"calibration.tip.border_width": "Сколько пикселей от края экрана использовать для цветов LED",
|
||
"calibration.tip.skip_leds_start": "Пропуск LED в начале ленты — пропущенные LED остаются выключенными",
|
||
"calibration.tip.skip_leds_end": "Пропуск LED в конце ленты — пропущенные LED остаются выключенными",
|
||
"calibration.tutorial.start": "Начать обучение",
|
||
"calibration.start_position": "Начальная Позиция:",
|
||
"calibration.position.bottom_left": "Нижний Левый",
|
||
"calibration.position.bottom_right": "Нижний Правый",
|
||
"calibration.position.top_left": "Верхний Левый",
|
||
"calibration.position.top_right": "Верхний Правый",
|
||
"calibration.direction": "Направление:",
|
||
"calibration.direction.clockwise": "По Часовой Стрелке",
|
||
"calibration.direction.counterclockwise": "Против Часовой Стрелки",
|
||
"calibration.leds.top": "Светодиодов Сверху:",
|
||
"calibration.leds.right": "Светодиодов Справа:",
|
||
"calibration.leds.bottom": "Светодиодов Снизу:",
|
||
"calibration.leds.left": "Светодиодов Слева:",
|
||
"calibration.offset": "Смещение LED:",
|
||
"calibration.offset.hint": "Расстояние от физического LED 0 до стартового угла (по направлению ленты)",
|
||
"calibration.skip_start": "Пропуск LED (начало):",
|
||
"calibration.skip_start.hint": "Количество LED, которые будут выключены в начале ленты (0 = нет)",
|
||
"calibration.skip_end": "Пропуск LED (конец):",
|
||
"calibration.skip_end.hint": "Количество LED, которые будут выключены в конце ленты (0 = нет)",
|
||
"calibration.border_width": "Граница (px):",
|
||
"calibration.border_width.hint": "Сколько пикселей от края экрана выбирать для цвета LED (1-100)",
|
||
"calibration.button.cancel": "Отмена",
|
||
"calibration.button.save": "Сохранить",
|
||
"calibration.saved": "Калибровка успешно сохранена",
|
||
"calibration.failed": "Не удалось сохранить калибровку",
|
||
"server.healthy": "Сервер онлайн",
|
||
"server.offline": "Сервер офлайн",
|
||
"error.unauthorized": "Не авторизован - пожалуйста, войдите",
|
||
"error.network": "Сетевая ошибка",
|
||
"error.unknown": "Произошла ошибка",
|
||
"modal.discard_changes": "У вас есть несохранённые изменения. Отменить их?",
|
||
"confirm.title": "Подтверждение Действия",
|
||
"confirm.yes": "Да",
|
||
"confirm.no": "Нет",
|
||
"common.loading": "Загрузка...",
|
||
"common.delete": "Удалить",
|
||
"common.edit": "Редактировать",
|
||
"streams.title": "\uD83D\uDCFA Источники",
|
||
"streams.description": "Источники определяют конвейер захвата. Сырой источник захватывает экран с помощью шаблона захвата. Обработанный источник применяет постобработку к другому источнику. Назначайте источники устройствам.",
|
||
"streams.group.raw": "Захват Экрана",
|
||
"streams.group.processed": "Обработанные",
|
||
"streams.section.streams": "\uD83D\uDCFA Источники",
|
||
"streams.add": "Добавить Источник",
|
||
"streams.add.raw": "Добавить Захват Экрана",
|
||
"streams.add.processed": "Добавить Обработанный",
|
||
"streams.edit": "Редактировать Источник",
|
||
"streams.edit.raw": "Редактировать Захват Экрана",
|
||
"streams.edit.processed": "Редактировать Обработанный Источник",
|
||
"streams.name": "Имя Источника:",
|
||
"streams.name.placeholder": "Мой Источник",
|
||
"streams.type": "Тип:",
|
||
"streams.type.raw": "Захват экрана",
|
||
"streams.type.processed": "Обработанный",
|
||
"streams.display": "Дисплей:",
|
||
"streams.display.hint": "Какой экран захватывать",
|
||
"streams.capture_template": "Шаблон Движка:",
|
||
"streams.capture_template.hint": "Шаблон движка, определяющий способ захвата экрана",
|
||
"streams.target_fps": "Целевой FPS:",
|
||
"streams.target_fps.hint": "Целевое количество кадров в секунду (10-90)",
|
||
"streams.source": "Источник:",
|
||
"streams.source.hint": "Источник, к которому применяются фильтры обработки",
|
||
"streams.pp_template": "Шаблон Фильтра:",
|
||
"streams.pp_template.hint": "Шаблон фильтра для применения к источнику",
|
||
"streams.description_label": "Описание (необязательно):",
|
||
"streams.description_placeholder": "Опишите этот источник...",
|
||
"streams.created": "Источник успешно создан",
|
||
"streams.updated": "Источник успешно обновлён",
|
||
"streams.deleted": "Источник успешно удалён",
|
||
"streams.delete.confirm": "Вы уверены, что хотите удалить этот источник?",
|
||
"streams.error.load": "Не удалось загрузить источники",
|
||
"streams.error.required": "Пожалуйста, заполните все обязательные поля",
|
||
"streams.error.delete": "Не удалось удалить источник",
|
||
"streams.test.title": "Тест Источника",
|
||
"streams.test.run": "🧪 Запустить",
|
||
"streams.test.running": "Тестирование источника...",
|
||
"streams.test.duration": "Длительность Захвата (с):",
|
||
"streams.test.error.failed": "Тест источника не удался",
|
||
"postprocessing.title": "\uD83D\uDCC4 Шаблоны Фильтров",
|
||
"postprocessing.description": "Шаблоны обработки определяют фильтры изображений и цветокоррекцию. Назначайте их обработанным источникам для единообразной постобработки на всех устройствах.",
|
||
"postprocessing.add": "Добавить Шаблон Фильтра",
|
||
"postprocessing.edit": "Редактировать Шаблон Фильтра",
|
||
"postprocessing.name": "Имя Шаблона:",
|
||
"postprocessing.name.placeholder": "Мой Шаблон Фильтра",
|
||
"filters.select_type": "Выберите тип фильтра...",
|
||
"filters.add": "Добавить фильтр",
|
||
"filters.remove": "Удалить",
|
||
"filters.move_up": "Вверх",
|
||
"filters.move_down": "Вниз",
|
||
"filters.empty": "Фильтры не добавлены. Используйте селектор ниже для добавления.",
|
||
"filters.brightness": "Яркость",
|
||
"filters.saturation": "Насыщенность",
|
||
"filters.gamma": "Гамма",
|
||
"filters.downscaler": "Уменьшение",
|
||
"filters.pixelate": "Пикселизация",
|
||
"filters.auto_crop": "Авто Обрезка",
|
||
"filters.flip": "Отражение",
|
||
"filters.color_correction": "Цветокоррекция",
|
||
"postprocessing.description_label": "Описание (необязательно):",
|
||
"postprocessing.description_placeholder": "Опишите этот шаблон...",
|
||
"postprocessing.created": "Шаблон успешно создан",
|
||
"postprocessing.updated": "Шаблон успешно обновлён",
|
||
"postprocessing.deleted": "Шаблон успешно удалён",
|
||
"postprocessing.delete.confirm": "Вы уверены, что хотите удалить этот шаблон фильтра?",
|
||
"postprocessing.error.load": "Не удалось загрузить шаблоны фильтров",
|
||
"postprocessing.error.required": "Пожалуйста, заполните все обязательные поля",
|
||
"postprocessing.error.delete": "Не удалось удалить шаблон фильтра",
|
||
"postprocessing.config.show": "Показать настройки",
|
||
"postprocessing.test.title": "Тест шаблона фильтра",
|
||
"postprocessing.test.source_stream": "Источник:",
|
||
"postprocessing.test.running": "Тестирование шаблона фильтра...",
|
||
"postprocessing.test.error.no_stream": "Пожалуйста, выберите источник",
|
||
"postprocessing.test.error.failed": "Тест шаблона фильтра не удался",
|
||
"device.button.stream_selector": "Настройки источника",
|
||
"device.stream_settings.title": "📺 Настройки источника",
|
||
"device.stream_selector.label": "Источник:",
|
||
"device.stream_selector.hint": "Выберите источник, определяющий что это устройство захватывает и обрабатывает",
|
||
"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.median": "Медиана",
|
||
"device.stream_settings.interpolation.dominant": "Доминантный",
|
||
"device.stream_settings.interpolation_hint": "Как вычислять цвет LED из выбранных пикселей",
|
||
"device.stream_settings.smoothing": "Сглаживание:",
|
||
"device.stream_settings.smoothing_hint": "Временное смешивание между кадрами (0=нет, 1=полное). Уменьшает мерцание.",
|
||
"device.tip.stream_selector": "Настройки источника и проекции LED для этого устройства",
|
||
"streams.group.static_image": "Статические",
|
||
"streams.add.static_image": "Добавить статическое изображение (источник)",
|
||
"streams.edit.static_image": "Редактировать статическое изображение (источник)",
|
||
"streams.type.static_image": "Статическое изображение",
|
||
"streams.image_source": "Источник изображения:",
|
||
"streams.image_source.placeholder": "https://example.com/image.jpg или C:\\path\\to\\image.png",
|
||
"streams.image_source.hint": "Введите URL (http/https) или локальный путь к изображению",
|
||
"streams.validate_image.validating": "Проверка...",
|
||
"streams.validate_image.valid": "Изображение доступно",
|
||
"streams.validate_image.invalid": "Изображение недоступно",
|
||
"targets.title": "⚡ Цели",
|
||
"targets.description": "Цели связывают источники изображений с устройствами вывода. Каждая цель ссылается на устройство и источник, с собственными настройками обработки.",
|
||
"targets.subtab.wled": "LED",
|
||
"targets.subtab.led": "LED",
|
||
"targets.section.devices": "💡 Устройства",
|
||
"targets.section.targets": "⚡ Цели",
|
||
"targets.add": "Добавить Цель",
|
||
"targets.edit": "Редактировать Цель",
|
||
"targets.loading": "Загрузка целей...",
|
||
"targets.none": "Цели не настроены",
|
||
"targets.failed": "Не удалось загрузить цели",
|
||
"targets.name": "Имя Цели:",
|
||
"targets.name.placeholder": "Моя Цель",
|
||
"targets.device": "Устройство:",
|
||
"targets.device.hint": "Выберите LED устройство для передачи данных",
|
||
"targets.device.none": "-- Выберите устройство --",
|
||
"targets.source": "Источник:",
|
||
"targets.source.hint": "Какой источник изображения захватывать и обрабатывать",
|
||
"targets.source.none": "-- Источник не назначен --",
|
||
"targets.fps": "Целевой FPS:",
|
||
"targets.fps.hint": "Целевая частота кадров для захвата и обновления LED (10-90)",
|
||
"targets.border_width": "Ширина границы (px):",
|
||
"targets.border_width.hint": "Сколько пикселей от края экрана выбирать для цвета LED (1-100)",
|
||
"targets.interpolation": "Режим интерполяции:",
|
||
"targets.interpolation.hint": "Как вычислять цвет LED из выбранных пикселей",
|
||
"targets.interpolation.average": "Среднее",
|
||
"targets.interpolation.median": "Медиана",
|
||
"targets.interpolation.dominant": "Доминантный",
|
||
"targets.smoothing": "Сглаживание:",
|
||
"targets.smoothing.hint": "Временное смешивание между кадрами (0=нет, 1=полное). Уменьшает мерцание.",
|
||
"targets.standby_interval": "Интервал ожидания:",
|
||
"targets.standby_interval.hint": "Как часто повторно отправлять последний кадр при статичном экране для удержания устройства в режиме live (0.5-5.0с)",
|
||
"targets.created": "Цель успешно создана",
|
||
"targets.updated": "Цель успешно обновлена",
|
||
"targets.deleted": "Цель успешно удалена",
|
||
"targets.delete.confirm": "Вы уверены, что хотите удалить эту цель?",
|
||
"targets.error.load": "Не удалось загрузить цели",
|
||
"targets.error.required": "Пожалуйста, заполните все обязательные поля",
|
||
"targets.error.delete": "Не удалось удалить цель",
|
||
"targets.button.start": "Запустить",
|
||
"targets.button.stop": "Остановить",
|
||
"targets.status.processing": "Обработка",
|
||
"targets.status.idle": "Ожидание",
|
||
"targets.status.error": "Ошибка",
|
||
"targets.metrics.actual_fps": "Факт. FPS",
|
||
"targets.metrics.target_fps": "Целев. FPS",
|
||
"targets.metrics.frames": "Кадры",
|
||
"targets.metrics.errors": "Ошибки",
|
||
"targets.subtab.key_colors": "Ключевые Цвета",
|
||
"targets.section.key_colors": "🎨 Цели Ключевых Цветов",
|
||
"kc.add": "Добавить Цель Ключевых Цветов",
|
||
"kc.edit": "Редактировать Цель Ключевых Цветов",
|
||
"kc.name": "Имя Цели:",
|
||
"kc.name.placeholder": "Моя Цель Ключевых Цветов",
|
||
"kc.source": "Источник:",
|
||
"kc.source.hint": "Из какого источника извлекать цвета",
|
||
"kc.source.none": "-- Источник не назначен --",
|
||
"kc.fps": "FPS Извлечения:",
|
||
"kc.fps.hint": "Сколько раз в секунду извлекать цвета (1-60)",
|
||
"kc.interpolation": "Режим Цвета:",
|
||
"kc.interpolation.hint": "Как вычислять ключевой цвет из пикселей в каждом прямоугольнике",
|
||
"kc.interpolation.average": "Среднее",
|
||
"kc.interpolation.median": "Медиана",
|
||
"kc.interpolation.dominant": "Доминантный",
|
||
"kc.smoothing": "Сглаживание:",
|
||
"kc.smoothing.hint": "Временное смешивание между извлечениями (0=нет, 1=полное)",
|
||
"kc.pattern_template": "Шаблон Паттерна:",
|
||
"kc.pattern_template.hint": "Выберите шаблон прямоугольников для извлечения цветов",
|
||
"kc.pattern_template.none": "-- Выберите шаблон паттерна --",
|
||
"kc.created": "Цель ключевых цветов успешно создана",
|
||
"kc.updated": "Цель ключевых цветов успешно обновлена",
|
||
"kc.deleted": "Цель ключевых цветов успешно удалена",
|
||
"kc.delete.confirm": "Вы уверены, что хотите удалить эту цель ключевых цветов?",
|
||
"kc.error.no_pattern": "Пожалуйста, выберите шаблон паттерна",
|
||
"kc.error.required": "Пожалуйста, заполните все обязательные поля",
|
||
"kc.colors.none": "Цвета пока не извлечены",
|
||
"kc.test": "Тест",
|
||
"kc.test.error": "Ошибка теста",
|
||
"targets.section.pattern_templates": "📄 Шаблоны Паттернов",
|
||
"pattern.add": "📄 Добавить Шаблон Паттерна",
|
||
"pattern.edit": "📄 Редактировать Шаблон Паттерна",
|
||
"pattern.name": "Имя Шаблона:",
|
||
"pattern.name.placeholder": "Мой Шаблон Паттерна",
|
||
"pattern.description_label": "Описание (необязательно):",
|
||
"pattern.description_placeholder": "Опишите этот паттерн...",
|
||
"pattern.rectangles": "Прямоугольники",
|
||
"pattern.rect.name": "Имя",
|
||
"pattern.rect.x": "X",
|
||
"pattern.rect.y": "Y",
|
||
"pattern.rect.width": "Ш",
|
||
"pattern.rect.height": "В",
|
||
"pattern.rect.add": "Добавить Прямоугольник",
|
||
"pattern.rect.remove": "Удалить",
|
||
"pattern.rect.empty": "Прямоугольники не определены. Добавьте хотя бы один.",
|
||
"pattern.created": "Шаблон паттерна успешно создан",
|
||
"pattern.updated": "Шаблон паттерна успешно обновлён",
|
||
"pattern.deleted": "Шаблон паттерна успешно удалён",
|
||
"pattern.delete.confirm": "Вы уверены, что хотите удалить этот шаблон паттерна?",
|
||
"pattern.delete.referenced": "Невозможно удалить: шаблон используется целью",
|
||
"pattern.error.required": "Пожалуйста, заполните все обязательные поля",
|
||
"pattern.visual_editor": "Визуальный Редактор",
|
||
"pattern.capture_bg": "Захватить Фон",
|
||
"pattern.source_for_bg": "Источник для Фона:",
|
||
"pattern.source_for_bg.none": "-- Выберите источник --",
|
||
"pattern.delete_selected": "Удалить Выбранный",
|
||
"pattern.name.hint": "Описательное имя для этой раскладки прямоугольников",
|
||
"pattern.description.hint": "Необязательные заметки о назначении этого паттерна",
|
||
"pattern.visual_editor.hint": "Нажмите кнопки + чтобы добавить прямоугольники. Тяните края для изменения размера, тяните внутри для перемещения.",
|
||
"pattern.rectangles.hint": "Точная настройка позиций и размеров прямоугольников в координатах (0.0 до 1.0)",
|
||
"overlay.button.show": "Показать визуализацию наложения",
|
||
"overlay.button.hide": "Скрыть визуализацию наложения",
|
||
"overlay.started": "Визуализация наложения запущена",
|
||
"overlay.stopped": "Визуализация наложения остановлена",
|
||
"overlay.error.start": "Не удалось запустить наложение",
|
||
"overlay.error.stop": "Не удалось остановить наложение",
|
||
"dashboard.title": "📊 Обзор",
|
||
"dashboard.section.targets": "Цели",
|
||
"dashboard.section.running": "Запущенные",
|
||
"dashboard.section.stopped": "Остановленные",
|
||
"dashboard.no_targets": "Нет настроенных целей",
|
||
"dashboard.uptime": "Время работы",
|
||
"dashboard.fps": "FPS",
|
||
"dashboard.errors": "Ошибки",
|
||
"dashboard.device": "Устройство",
|
||
"dashboard.stop_all": "Остановить все",
|
||
"dashboard.failed": "Не удалось загрузить обзор",
|
||
"dashboard.section.profiles": "Профили",
|
||
"dashboard.targets": "Цели",
|
||
"dashboard.section.performance": "Производительность системы",
|
||
"dashboard.perf.cpu": "ЦП",
|
||
"dashboard.perf.ram": "ОЗУ",
|
||
"dashboard.perf.gpu": "ГП",
|
||
"dashboard.perf.unavailable": "недоступно",
|
||
"dashboard.poll_interval": "Интервал обновления",
|
||
|
||
"profiles.title": "\uD83D\uDCCB Профили",
|
||
"profiles.empty": "Профили не настроены. Создайте профиль для автоматизации целей.",
|
||
"profiles.add": "\uD83D\uDCCB Добавить профиль",
|
||
"profiles.edit": "Редактировать профиль",
|
||
"profiles.delete.confirm": "Удалить профиль \"{name}\"?",
|
||
"profiles.name": "Название:",
|
||
"profiles.name.hint": "Описательное имя для профиля",
|
||
"profiles.enabled": "Включён:",
|
||
"profiles.enabled.hint": "Отключённые профили не активируются даже при выполнении условий",
|
||
"profiles.condition_logic": "Логика условий:",
|
||
"profiles.condition_logic.hint": "Как объединяются несколько условий: ЛЮБОЕ (ИЛИ) или ВСЕ (И)",
|
||
"profiles.condition_logic.or": "Любое условие (ИЛИ)",
|
||
"profiles.condition_logic.and": "Все условия (И)",
|
||
"profiles.conditions": "Условия:",
|
||
"profiles.conditions.hint": "Правила, определяющие когда профиль активируется",
|
||
"profiles.conditions.add": "Добавить условие",
|
||
"profiles.conditions.empty": "Нет условий \u2014 профиль не активируется автоматически",
|
||
"profiles.condition.application": "Приложение",
|
||
"profiles.condition.application.apps": "Приложения:",
|
||
"profiles.condition.application.apps.hint": "Имена процессов, по одному на строку (например firefox.exe)",
|
||
"profiles.condition.application.browse": "Обзор",
|
||
"profiles.condition.application.search": "Фильтр процессов...",
|
||
"profiles.condition.application.no_processes": "Процессы не найдены",
|
||
"profiles.condition.application.match_type": "Тип соответствия:",
|
||
"profiles.condition.application.match_type.hint": "Как определять наличие приложения",
|
||
"profiles.condition.application.match_type.running": "Запущено",
|
||
"profiles.condition.application.match_type.topmost": "На переднем плане",
|
||
"profiles.condition.application.match_type.topmost_fullscreen": "На переднем плане + Полный экран",
|
||
"profiles.condition.application.match_type.fullscreen": "Полный экран",
|
||
"profiles.targets": "Цели:",
|
||
"profiles.targets.hint": "Цели для запуска при активации профиля",
|
||
"profiles.targets.empty": "Нет доступных целей",
|
||
"profiles.status.active": "Активен",
|
||
"profiles.status.inactive": "Неактивен",
|
||
"profiles.status.disabled": "Отключён",
|
||
"profiles.last_activated": "Последняя активация"
|
||
}
|