Replace all emoji icons with Lucide SVGs, add accent color picker
- Replace all emoji characters across WebUI with inline Lucide SVG icons for cross-platform consistency (icon paths in icon-paths.js) - Add accent color picker popover with 9 preset colors + custom picker, persisted to localStorage, updates all CSS custom properties - Remove subtab separator line for cleaner look - Color badge icons with accent color for visual pop - Remove processing badge from target cards - Fix hardcoded #4CAF50 in FPS labels and active badges to use CSS vars - Replace CSS content emoji (▶) with pure CSS triangle Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,8 @@
|
||||
"app.version": "Version:",
|
||||
"app.api_docs": "API Documentation",
|
||||
"theme.toggle": "Toggle theme",
|
||||
"accent.title": "Accent color",
|
||||
"accent.custom": "Custom",
|
||||
"locale.change": "Change language",
|
||||
"auth.login": "Login",
|
||||
"auth.logout": "Logout",
|
||||
@@ -21,7 +23,7 @@
|
||||
"auth.please_login": "Please login to view",
|
||||
"auth.session_expired": "Your session has expired or the API key is invalid. Please login again.",
|
||||
"displays.title": "Available Displays",
|
||||
"displays.layout": "\uD83D\uDDA5\uFE0F Displays",
|
||||
"displays.layout": "Displays",
|
||||
"displays.information": "Display Information",
|
||||
"displays.legend.primary": "Primary Display",
|
||||
"displays.legend.secondary": "Secondary Display",
|
||||
@@ -44,7 +46,7 @@
|
||||
"displays.picker.adb_connect.error": "Failed to connect device",
|
||||
"displays.picker.adb_disconnect": "Disconnect",
|
||||
"displays.picker.no_android": "No Android devices found. Connect via USB or enter IP above.",
|
||||
"templates.title": "\uD83D\uDCC4 Engine Templates",
|
||||
"templates.title": "Engine Templates",
|
||||
"templates.description": "Capture templates define how the screen is captured. Each template uses a specific capture engine (MSS, DXcam, WGC) with custom settings. Assign templates to devices for optimal performance.",
|
||||
"templates.loading": "Loading templates...",
|
||||
"templates.empty": "No capture templates configured",
|
||||
@@ -77,7 +79,7 @@
|
||||
"templates.test.display.select": "Select display...",
|
||||
"templates.test.duration": "Capture Duration (s):",
|
||||
"templates.test.border_width": "Border Width (px):",
|
||||
"templates.test.run": "\uD83E\uDDEA Run",
|
||||
"templates.test.run": "Run",
|
||||
"templates.test.running": "Running test...",
|
||||
"templates.test.results.preview": "Full Capture Preview",
|
||||
"templates.test.results.borders": "Border Extraction",
|
||||
@@ -97,7 +99,7 @@
|
||||
"templates.test.error.no_engine": "Please select a capture engine",
|
||||
"templates.test.error.no_display": "Please select a display",
|
||||
"templates.test.error.failed": "Test failed",
|
||||
"devices.title": "\uD83D\uDCA1 Devices",
|
||||
"devices.title": "Devices",
|
||||
"devices.add": "Add New Device",
|
||||
"devices.loading": "Loading devices...",
|
||||
"devices.none": "No devices configured",
|
||||
@@ -180,7 +182,7 @@
|
||||
"device.tip.calibrate": "Calibrate LED positions, direction, and coverage",
|
||||
"device.tip.webui": "Open the device's built-in web interface for advanced configuration",
|
||||
"device.tip.add": "Click here to add a new LED device",
|
||||
"settings.title": "Device Settings",
|
||||
"settings.title": "Settings",
|
||||
"settings.general.title": "General Settings",
|
||||
"settings.capture.title": "Capture Settings",
|
||||
"settings.capture.saved": "Capture settings updated",
|
||||
@@ -285,12 +287,12 @@
|
||||
"section.filter.reset": "Clear filter",
|
||||
"section.expand_all": "Expand all sections",
|
||||
"section.collapse_all": "Collapse all sections",
|
||||
"streams.title": "\uD83D\uDCFA Sources",
|
||||
"streams.title": "Sources",
|
||||
"streams.description": "Sources define the capture pipeline. A raw source captures from a display using a capture template. A processed source applies postprocessing to another source. Assign sources to devices.",
|
||||
"streams.group.raw": "Screen Capture",
|
||||
"streams.group.processed": "Processed",
|
||||
"streams.group.audio": "Audio",
|
||||
"streams.section.streams": "\uD83D\uDCFA Sources",
|
||||
"streams.section.streams": "Sources",
|
||||
"streams.add": "Add Source",
|
||||
"streams.add.raw": "Add Screen Capture",
|
||||
"streams.add.processed": "Add Processed Source",
|
||||
@@ -322,11 +324,11 @@
|
||||
"streams.error.required": "Please fill in all required fields",
|
||||
"streams.error.delete": "Failed to delete source",
|
||||
"streams.test.title": "Test Source",
|
||||
"streams.test.run": "🧪 Run",
|
||||
"streams.test.run": "Run",
|
||||
"streams.test.running": "Testing source...",
|
||||
"streams.test.duration": "Capture Duration (s):",
|
||||
"streams.test.error.failed": "Source test failed",
|
||||
"postprocessing.title": "\uD83D\uDCC4 Filter Templates",
|
||||
"postprocessing.title": "Filter Templates",
|
||||
"postprocessing.description": "Processing templates define image filters and color correction. Assign them to processed picture sources for consistent postprocessing across devices.",
|
||||
"postprocessing.add": "Add Filter Template",
|
||||
"postprocessing.edit": "Edit Filter Template",
|
||||
@@ -363,7 +365,7 @@
|
||||
"postprocessing.test.error.no_stream": "Please select a source",
|
||||
"postprocessing.test.error.failed": "Processing template test failed",
|
||||
"device.button.stream_selector": "Source Settings",
|
||||
"device.stream_settings.title": "📺 Source Settings",
|
||||
"device.stream_settings.title": "Source Settings",
|
||||
"device.stream_selector.label": "Source:",
|
||||
"device.stream_selector.hint": "Select a source that defines what this device captures and processes",
|
||||
"device.stream_selector.none": "-- No source assigned --",
|
||||
@@ -388,13 +390,13 @@
|
||||
"streams.validate_image.validating": "Validating...",
|
||||
"streams.validate_image.valid": "Image accessible",
|
||||
"streams.validate_image.invalid": "Image not accessible",
|
||||
"targets.title": "⚡ Targets",
|
||||
"targets.title": "Targets",
|
||||
"targets.description": "Targets bridge color strip sources to output devices. Each target references a device and a color strip source.",
|
||||
"targets.subtab.wled": "LED",
|
||||
"targets.subtab.led": "LED",
|
||||
"targets.section.devices": "💡 Devices",
|
||||
"targets.section.color_strips": "🎞️ Color Strip Sources",
|
||||
"targets.section.targets": "⚡ Targets",
|
||||
"targets.section.devices": "Devices",
|
||||
"targets.section.color_strips": "Color Strip Sources",
|
||||
"targets.section.targets": "Targets",
|
||||
"targets.section.specific_settings": "Specific Settings",
|
||||
"targets.add": "Add Target",
|
||||
"targets.edit": "Edit Target",
|
||||
@@ -444,7 +446,7 @@
|
||||
"targets.metrics.frames": "Frames",
|
||||
"targets.metrics.errors": "Errors",
|
||||
"targets.subtab.key_colors": "Key Colors",
|
||||
"targets.section.key_colors": "🎨 Key Colors Targets",
|
||||
"targets.section.key_colors": "Key Colors Targets",
|
||||
"kc.add": "Add Key Colors Target",
|
||||
"kc.edit": "Edit Key Colors Target",
|
||||
"kc.name": "Target Name:",
|
||||
@@ -476,9 +478,9 @@
|
||||
"kc.colors.none": "No colors extracted yet",
|
||||
"kc.test": "Test",
|
||||
"kc.test.error": "Test failed",
|
||||
"targets.section.pattern_templates": "📄 Pattern Templates",
|
||||
"pattern.add": "📄 Add Pattern Template",
|
||||
"pattern.edit": "📄 Edit Pattern Template",
|
||||
"targets.section.pattern_templates": "Pattern Templates",
|
||||
"pattern.add": "Add Pattern Template",
|
||||
"pattern.edit": "Edit Pattern Template",
|
||||
"pattern.name": "Template Name:",
|
||||
"pattern.name.placeholder": "My Pattern Template",
|
||||
"pattern.description_label": "Description (optional):",
|
||||
@@ -513,7 +515,7 @@
|
||||
"overlay.stopped": "Overlay visualization stopped",
|
||||
"overlay.error.start": "Failed to start overlay",
|
||||
"overlay.error.stop": "Failed to stop overlay",
|
||||
"dashboard.title": "📊 Dashboard",
|
||||
"dashboard.title": "Dashboard",
|
||||
"dashboard.section.targets": "Targets",
|
||||
"dashboard.section.running": "Running",
|
||||
"dashboard.section.stopped": "Stopped",
|
||||
@@ -532,10 +534,9 @@
|
||||
"dashboard.perf.gpu": "GPU",
|
||||
"dashboard.perf.unavailable": "unavailable",
|
||||
"dashboard.poll_interval": "Refresh interval",
|
||||
|
||||
"profiles.title": "\uD83D\uDCCB Profiles",
|
||||
"profiles.title": "Profiles",
|
||||
"profiles.empty": "No profiles configured. Create one to automate target activation.",
|
||||
"profiles.add": "\uD83D\uDCCB Add Profile",
|
||||
"profiles.add": "Add Profile",
|
||||
"profiles.edit": "Edit Profile",
|
||||
"profiles.delete.confirm": "Delete profile \"{name}\"?",
|
||||
"profiles.name": "Name:",
|
||||
@@ -549,7 +550,7 @@
|
||||
"profiles.conditions": "Conditions:",
|
||||
"profiles.conditions.hint": "Rules that determine when this profile activates",
|
||||
"profiles.conditions.add": "Add Condition",
|
||||
"profiles.conditions.empty": "No conditions \u2014 profile is always active when enabled",
|
||||
"profiles.conditions.empty": "No conditions — profile is always active when enabled",
|
||||
"profiles.condition.always": "Always",
|
||||
"profiles.condition.always.hint": "Profile activates immediately when enabled and stays active. Use this to auto-start targets on server startup.",
|
||||
"profiles.condition.application": "Application",
|
||||
@@ -597,9 +598,8 @@
|
||||
"aria.previous": "Previous",
|
||||
"aria.next": "Next",
|
||||
"aria.hint": "Show hint",
|
||||
|
||||
"color_strip.add": "🎞️ Add Color Strip Source",
|
||||
"color_strip.edit": "🎞️ Edit Color Strip Source",
|
||||
"color_strip.add": "Add Color Strip Source",
|
||||
"color_strip.edit": "Edit Color Strip Source",
|
||||
"color_strip.name": "Name:",
|
||||
"color_strip.name.placeholder": "Wall Strip",
|
||||
"color_strip.picture_source": "Picture Source:",
|
||||
@@ -786,7 +786,6 @@
|
||||
"color_strip.palette.aurora": "Aurora",
|
||||
"color_strip.palette.sunset": "Sunset",
|
||||
"color_strip.palette.ice": "Ice",
|
||||
|
||||
"audio_source.title": "Audio Sources",
|
||||
"audio_source.group.multichannel": "Multichannel",
|
||||
"audio_source.group.mono": "Mono",
|
||||
@@ -829,14 +828,12 @@
|
||||
"audio_source.test.beat": "Beat",
|
||||
"audio_source.test.connecting": "Connecting...",
|
||||
"audio_source.test.error": "Audio test failed",
|
||||
|
||||
"audio_template.test": "Test",
|
||||
"audio_template.test.title": "Test Audio Template",
|
||||
"audio_template.test.device": "Audio Device:",
|
||||
"audio_template.test.device.hint": "Select which audio device to capture from during the test",
|
||||
"audio_template.test.run": "🧪 Run",
|
||||
|
||||
"audio_template.title": "🎵 Audio Templates",
|
||||
"audio_template.test.run": "Run",
|
||||
"audio_template.title": "Audio Templates",
|
||||
"audio_template.add": "Add Audio Template",
|
||||
"audio_template.edit": "Edit Audio Template",
|
||||
"audio_template.name": "Template Name:",
|
||||
@@ -857,9 +854,8 @@
|
||||
"audio_template.error.engines": "Failed to load audio engines",
|
||||
"audio_template.error.required": "Please fill in all required fields",
|
||||
"audio_template.error.delete": "Failed to delete audio template",
|
||||
|
||||
"streams.group.value": "Value Sources",
|
||||
"value_source.group.title": "🔢 Value Sources",
|
||||
"value_source.group.title": "Value Sources",
|
||||
"value_source.add": "Add Value Source",
|
||||
"value_source.edit": "Edit Value Source",
|
||||
"value_source.name": "Name:",
|
||||
@@ -947,7 +943,6 @@
|
||||
"targets.protocol": "Protocol:",
|
||||
"targets.protocol.hint": "DDP sends pixels via fast UDP (recommended for most setups). HTTP uses the JSON API — slower but reliable, limited to ~500 LEDs.",
|
||||
"targets.protocol.serial": "Serial",
|
||||
|
||||
"search.open": "Search (Ctrl+K)",
|
||||
"search.placeholder": "Search entities... (Ctrl+K)",
|
||||
"search.loading": "Loading...",
|
||||
@@ -963,8 +958,6 @@
|
||||
"search.group.pattern_templates": "Pattern Templates",
|
||||
"search.group.audio": "Audio Sources",
|
||||
"search.group.value": "Value Sources",
|
||||
|
||||
"settings.title": "Settings",
|
||||
"settings.backup.label": "Backup Configuration",
|
||||
"settings.backup.hint": "Download all configuration (devices, targets, streams, templates, profiles) as a single JSON file.",
|
||||
"settings.backup.button": "Download Backup",
|
||||
@@ -979,7 +972,6 @@
|
||||
"settings.restore.restarting": "Server is restarting...",
|
||||
"settings.restore.restart_timeout": "Server did not respond. Please refresh the page manually.",
|
||||
"settings.button.close": "Close",
|
||||
|
||||
"settings.auto_backup.label": "Auto-Backup",
|
||||
"settings.auto_backup.hint": "Automatically create periodic backups of all configuration. Old backups are pruned when the maximum count is reached.",
|
||||
"settings.auto_backup.enable": "Enable auto-backup",
|
||||
@@ -990,7 +982,6 @@
|
||||
"settings.auto_backup.save_error": "Failed to save auto-backup settings",
|
||||
"settings.auto_backup.last_backup": "Last backup",
|
||||
"settings.auto_backup.never": "Never",
|
||||
|
||||
"settings.saved_backups.label": "Saved Backups",
|
||||
"settings.saved_backups.hint": "Auto-backup files stored on the server. Download to save locally, or delete to free space.",
|
||||
"settings.saved_backups.empty": "No saved backups",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"app.version": "Версия:",
|
||||
"app.api_docs": "Документация API",
|
||||
"theme.toggle": "Переключить тему",
|
||||
"accent.title": "Цвет акцента",
|
||||
"accent.custom": "Свой",
|
||||
"locale.change": "Изменить язык",
|
||||
"auth.login": "Войти",
|
||||
"auth.logout": "Выйти",
|
||||
@@ -21,7 +23,7 @@
|
||||
"auth.please_login": "Пожалуйста, войдите для просмотра",
|
||||
"auth.session_expired": "Ваша сессия истекла или API ключ недействителен. Пожалуйста, войдите снова.",
|
||||
"displays.title": "Доступные Дисплеи",
|
||||
"displays.layout": "\uD83D\uDDA5\uFE0F Дисплеи",
|
||||
"displays.layout": "Дисплеи",
|
||||
"displays.information": "Информация о Дисплеях",
|
||||
"displays.legend.primary": "Основной Дисплей",
|
||||
"displays.legend.secondary": "Вторичный Дисплей",
|
||||
@@ -44,7 +46,7 @@
|
||||
"displays.picker.adb_connect.error": "Не удалось подключить устройство",
|
||||
"displays.picker.adb_disconnect": "Отключить",
|
||||
"displays.picker.no_android": "Android устройства не найдены. Подключите по USB или введите IP выше.",
|
||||
"templates.title": "\uD83D\uDCC4 Шаблоны Движков",
|
||||
"templates.title": "Шаблоны Движков",
|
||||
"templates.description": "Шаблоны захвата определяют, как захватывается экран. Каждый шаблон использует определённый движок захвата (MSS, DXcam, WGC) с настраиваемыми параметрами. Назначайте шаблоны устройствам для оптимальной производительности.",
|
||||
"templates.loading": "Загрузка шаблонов...",
|
||||
"templates.empty": "Шаблоны захвата не настроены",
|
||||
@@ -77,7 +79,7 @@
|
||||
"templates.test.display.select": "Выберите дисплей...",
|
||||
"templates.test.duration": "Длительность Захвата (с):",
|
||||
"templates.test.border_width": "Ширина Границы (px):",
|
||||
"templates.test.run": "\uD83E\uDDEA Запустить",
|
||||
"templates.test.run": "Запустить",
|
||||
"templates.test.running": "Выполняется тест...",
|
||||
"templates.test.results.preview": "Полный Предпросмотр Захвата",
|
||||
"templates.test.results.borders": "Извлечение Границ",
|
||||
@@ -97,7 +99,7 @@
|
||||
"templates.test.error.no_engine": "Пожалуйста, выберите движок захвата",
|
||||
"templates.test.error.no_display": "Пожалуйста, выберите дисплей",
|
||||
"templates.test.error.failed": "Тест не удался",
|
||||
"devices.title": "\uD83D\uDCA1 Устройства",
|
||||
"devices.title": "Устройства",
|
||||
"devices.add": "Добавить Новое Устройство",
|
||||
"devices.loading": "Загрузка устройств...",
|
||||
"devices.none": "Устройства не настроены",
|
||||
@@ -180,7 +182,7 @@
|
||||
"device.tip.calibrate": "Калибровка позиций LED, направления и зоны покрытия",
|
||||
"device.tip.webui": "Открыть встроенный веб-интерфейс устройства для расширенной настройки",
|
||||
"device.tip.add": "Нажмите, чтобы добавить новое LED устройство",
|
||||
"settings.title": "Настройки Устройства",
|
||||
"settings.title": "Настройки",
|
||||
"settings.general.title": "Основные Настройки",
|
||||
"settings.capture.title": "Настройки Захвата",
|
||||
"settings.capture.saved": "Настройки захвата обновлены",
|
||||
@@ -285,12 +287,12 @@
|
||||
"section.filter.reset": "Очистить фильтр",
|
||||
"section.expand_all": "Развернуть все секции",
|
||||
"section.collapse_all": "Свернуть все секции",
|
||||
"streams.title": "\uD83D\uDCFA Источники",
|
||||
"streams.title": "Источники",
|
||||
"streams.description": "Источники определяют конвейер захвата. Сырой источник захватывает экран с помощью шаблона захвата. Обработанный источник применяет постобработку к другому источнику. Назначайте источники устройствам.",
|
||||
"streams.group.raw": "Захват Экрана",
|
||||
"streams.group.processed": "Обработанные",
|
||||
"streams.group.audio": "Аудио",
|
||||
"streams.section.streams": "\uD83D\uDCFA Источники",
|
||||
"streams.section.streams": "Источники",
|
||||
"streams.add": "Добавить Источник",
|
||||
"streams.add.raw": "Добавить Захват Экрана",
|
||||
"streams.add.processed": "Добавить Обработанный",
|
||||
@@ -322,11 +324,11 @@
|
||||
"streams.error.required": "Пожалуйста, заполните все обязательные поля",
|
||||
"streams.error.delete": "Не удалось удалить источник",
|
||||
"streams.test.title": "Тест Источника",
|
||||
"streams.test.run": "🧪 Запустить",
|
||||
"streams.test.run": "Запустить",
|
||||
"streams.test.running": "Тестирование источника...",
|
||||
"streams.test.duration": "Длительность Захвата (с):",
|
||||
"streams.test.error.failed": "Тест источника не удался",
|
||||
"postprocessing.title": "\uD83D\uDCC4 Шаблоны Фильтров",
|
||||
"postprocessing.title": "Шаблоны Фильтров",
|
||||
"postprocessing.description": "Шаблоны обработки определяют фильтры изображений и цветокоррекцию. Назначайте их обработанным источникам для единообразной постобработки на всех устройствах.",
|
||||
"postprocessing.add": "Добавить Шаблон Фильтра",
|
||||
"postprocessing.edit": "Редактировать Шаблон Фильтра",
|
||||
@@ -363,7 +365,7 @@
|
||||
"postprocessing.test.error.no_stream": "Пожалуйста, выберите источник",
|
||||
"postprocessing.test.error.failed": "Тест шаблона фильтра не удался",
|
||||
"device.button.stream_selector": "Настройки источника",
|
||||
"device.stream_settings.title": "📺 Настройки источника",
|
||||
"device.stream_settings.title": "Настройки источника",
|
||||
"device.stream_selector.label": "Источник:",
|
||||
"device.stream_selector.hint": "Выберите источник, определяющий что это устройство захватывает и обрабатывает",
|
||||
"device.stream_selector.none": "-- Источник не назначен --",
|
||||
@@ -388,13 +390,13 @@
|
||||
"streams.validate_image.validating": "Проверка...",
|
||||
"streams.validate_image.valid": "Изображение доступно",
|
||||
"streams.validate_image.invalid": "Изображение недоступно",
|
||||
"targets.title": "⚡ Цели",
|
||||
"targets.title": "Цели",
|
||||
"targets.description": "Цели связывают источники цветовых полос с устройствами вывода. Каждая цель ссылается на устройство и источник цветовой полосы.",
|
||||
"targets.subtab.wled": "LED",
|
||||
"targets.subtab.led": "LED",
|
||||
"targets.section.devices": "💡 Устройства",
|
||||
"targets.section.color_strips": "🎞️ Источники цветовых полос",
|
||||
"targets.section.targets": "⚡ Цели",
|
||||
"targets.section.devices": "Устройства",
|
||||
"targets.section.color_strips": "Источники цветовых полос",
|
||||
"targets.section.targets": "Цели",
|
||||
"targets.section.specific_settings": "Специальные настройки",
|
||||
"targets.add": "Добавить Цель",
|
||||
"targets.edit": "Редактировать Цель",
|
||||
@@ -444,7 +446,7 @@
|
||||
"targets.metrics.frames": "Кадры",
|
||||
"targets.metrics.errors": "Ошибки",
|
||||
"targets.subtab.key_colors": "Ключевые Цвета",
|
||||
"targets.section.key_colors": "🎨 Цели Ключевых Цветов",
|
||||
"targets.section.key_colors": "Цели Ключевых Цветов",
|
||||
"kc.add": "Добавить Цель Ключевых Цветов",
|
||||
"kc.edit": "Редактировать Цель Ключевых Цветов",
|
||||
"kc.name": "Имя Цели:",
|
||||
@@ -476,9 +478,9 @@
|
||||
"kc.colors.none": "Цвета пока не извлечены",
|
||||
"kc.test": "Тест",
|
||||
"kc.test.error": "Ошибка теста",
|
||||
"targets.section.pattern_templates": "📄 Шаблоны Паттернов",
|
||||
"pattern.add": "📄 Добавить Шаблон Паттерна",
|
||||
"pattern.edit": "📄 Редактировать Шаблон Паттерна",
|
||||
"targets.section.pattern_templates": "Шаблоны Паттернов",
|
||||
"pattern.add": "Добавить Шаблон Паттерна",
|
||||
"pattern.edit": "Редактировать Шаблон Паттерна",
|
||||
"pattern.name": "Имя Шаблона:",
|
||||
"pattern.name.placeholder": "Мой Шаблон Паттерна",
|
||||
"pattern.description_label": "Описание (необязательно):",
|
||||
@@ -513,7 +515,7 @@
|
||||
"overlay.stopped": "Визуализация наложения остановлена",
|
||||
"overlay.error.start": "Не удалось запустить наложение",
|
||||
"overlay.error.stop": "Не удалось остановить наложение",
|
||||
"dashboard.title": "📊 Обзор",
|
||||
"dashboard.title": "Обзор",
|
||||
"dashboard.section.targets": "Цели",
|
||||
"dashboard.section.running": "Запущенные",
|
||||
"dashboard.section.stopped": "Остановленные",
|
||||
@@ -532,10 +534,9 @@
|
||||
"dashboard.perf.gpu": "ГП",
|
||||
"dashboard.perf.unavailable": "недоступно",
|
||||
"dashboard.poll_interval": "Интервал обновления",
|
||||
|
||||
"profiles.title": "\uD83D\uDCCB Профили",
|
||||
"profiles.title": "Профили",
|
||||
"profiles.empty": "Профили не настроены. Создайте профиль для автоматизации целей.",
|
||||
"profiles.add": "\uD83D\uDCCB Добавить профиль",
|
||||
"profiles.add": "Добавить профиль",
|
||||
"profiles.edit": "Редактировать профиль",
|
||||
"profiles.delete.confirm": "Удалить профиль \"{name}\"?",
|
||||
"profiles.name": "Название:",
|
||||
@@ -549,7 +550,7 @@
|
||||
"profiles.conditions": "Условия:",
|
||||
"profiles.conditions.hint": "Правила, определяющие когда профиль активируется",
|
||||
"profiles.conditions.add": "Добавить условие",
|
||||
"profiles.conditions.empty": "Нет условий \u2014 профиль всегда активен когда включён",
|
||||
"profiles.conditions.empty": "Нет условий — профиль всегда активен когда включён",
|
||||
"profiles.condition.always": "Всегда",
|
||||
"profiles.condition.always.hint": "Профиль активируется сразу при включении и остаётся активным. Используйте для автозапуска целей при старте сервера.",
|
||||
"profiles.condition.application": "Приложение",
|
||||
@@ -597,9 +598,8 @@
|
||||
"aria.previous": "Назад",
|
||||
"aria.next": "Вперёд",
|
||||
"aria.hint": "Показать подсказку",
|
||||
|
||||
"color_strip.add": "🎞️ Добавить источник цветовой полосы",
|
||||
"color_strip.edit": "🎞️ Редактировать источник цветовой полосы",
|
||||
"color_strip.add": "Добавить источник цветовой полосы",
|
||||
"color_strip.edit": "Редактировать источник цветовой полосы",
|
||||
"color_strip.name": "Название:",
|
||||
"color_strip.name.placeholder": "Настенная полоса",
|
||||
"color_strip.picture_source": "Источник изображения:",
|
||||
@@ -786,7 +786,6 @@
|
||||
"color_strip.palette.aurora": "Аврора",
|
||||
"color_strip.palette.sunset": "Закат",
|
||||
"color_strip.palette.ice": "Лёд",
|
||||
|
||||
"audio_source.title": "Аудиоисточники",
|
||||
"audio_source.group.multichannel": "Многоканальные",
|
||||
"audio_source.group.mono": "Моно",
|
||||
@@ -829,14 +828,12 @@
|
||||
"audio_source.test.beat": "Бит",
|
||||
"audio_source.test.connecting": "Подключение...",
|
||||
"audio_source.test.error": "Ошибка теста аудио",
|
||||
|
||||
"audio_template.test": "Тест",
|
||||
"audio_template.test.title": "Тест аудиошаблона",
|
||||
"audio_template.test.device": "Аудиоустройство:",
|
||||
"audio_template.test.device.hint": "Выберите устройство для захвата звука во время теста",
|
||||
"audio_template.test.run": "🧪 Запуск",
|
||||
|
||||
"audio_template.title": "🎵 Аудиошаблоны",
|
||||
"audio_template.test.run": "Запуск",
|
||||
"audio_template.title": "Аудиошаблоны",
|
||||
"audio_template.add": "Добавить аудиошаблон",
|
||||
"audio_template.edit": "Редактировать аудиошаблон",
|
||||
"audio_template.name": "Название шаблона:",
|
||||
@@ -857,9 +854,8 @@
|
||||
"audio_template.error.engines": "Не удалось загрузить аудиодвижки",
|
||||
"audio_template.error.required": "Пожалуйста, заполните все обязательные поля",
|
||||
"audio_template.error.delete": "Не удалось удалить аудиошаблон",
|
||||
|
||||
"streams.group.value": "Источники значений",
|
||||
"value_source.group.title": "🔢 Источники значений",
|
||||
"value_source.group.title": "Источники значений",
|
||||
"value_source.add": "Добавить источник значений",
|
||||
"value_source.edit": "Редактировать источник значений",
|
||||
"value_source.name": "Название:",
|
||||
@@ -947,7 +943,6 @@
|
||||
"targets.protocol": "Протокол:",
|
||||
"targets.protocol.hint": "DDP отправляет пиксели по быстрому UDP (рекомендуется). HTTP использует JSON API — медленнее, но надёжнее, ограничение ~500 LED.",
|
||||
"targets.protocol.serial": "Serial",
|
||||
|
||||
"search.open": "Поиск (Ctrl+K)",
|
||||
"search.placeholder": "Поиск... (Ctrl+K)",
|
||||
"search.loading": "Загрузка...",
|
||||
@@ -963,8 +958,6 @@
|
||||
"search.group.pattern_templates": "Шаблоны паттернов",
|
||||
"search.group.audio": "Аудиоисточники",
|
||||
"search.group.value": "Источники значений",
|
||||
|
||||
"settings.title": "Настройки",
|
||||
"settings.backup.label": "Резервное копирование",
|
||||
"settings.backup.hint": "Скачать всю конфигурацию (устройства, цели, потоки, шаблоны, профили) в виде одного JSON-файла.",
|
||||
"settings.backup.button": "Скачать резервную копию",
|
||||
@@ -979,7 +972,6 @@
|
||||
"settings.restore.restarting": "Сервер перезапускается...",
|
||||
"settings.restore.restart_timeout": "Сервер не отвечает. Обновите страницу вручную.",
|
||||
"settings.button.close": "Закрыть",
|
||||
|
||||
"settings.auto_backup.label": "Авто-бэкап",
|
||||
"settings.auto_backup.hint": "Автоматическое создание периодических резервных копий конфигурации. Старые копии удаляются при превышении максимального количества.",
|
||||
"settings.auto_backup.enable": "Включить авто-бэкап",
|
||||
@@ -990,7 +982,6 @@
|
||||
"settings.auto_backup.save_error": "Не удалось сохранить настройки авто-бэкапа",
|
||||
"settings.auto_backup.last_backup": "Последний бэкап",
|
||||
"settings.auto_backup.never": "Никогда",
|
||||
|
||||
"settings.saved_backups.label": "Сохранённые копии",
|
||||
"settings.saved_backups.hint": "Файлы авто-бэкапа на сервере. Скачайте для локального хранения или удалите для освобождения места.",
|
||||
"settings.saved_backups.empty": "Нет сохранённых копий",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"app.version": "版本:",
|
||||
"app.api_docs": "API 文档",
|
||||
"theme.toggle": "切换主题",
|
||||
"accent.title": "主题色",
|
||||
"accent.custom": "自定义",
|
||||
"locale.change": "切换语言",
|
||||
"auth.login": "登录",
|
||||
"auth.logout": "退出",
|
||||
@@ -21,7 +23,7 @@
|
||||
"auth.please_login": "请先登录",
|
||||
"auth.session_expired": "会话已过期或 API 密钥无效,请重新登录。",
|
||||
"displays.title": "可用显示器",
|
||||
"displays.layout": "\uD83D\uDDA5\uFE0F 显示器",
|
||||
"displays.layout": "显示器",
|
||||
"displays.information": "显示器信息",
|
||||
"displays.legend.primary": "主显示器",
|
||||
"displays.legend.secondary": "副显示器",
|
||||
@@ -44,7 +46,7 @@
|
||||
"displays.picker.adb_connect.error": "连接设备失败",
|
||||
"displays.picker.adb_disconnect": "断开连接",
|
||||
"displays.picker.no_android": "未找到 Android 设备。请通过 USB 连接或在上方输入 IP 地址。",
|
||||
"templates.title": "\uD83D\uDCC4 引擎模板",
|
||||
"templates.title": "引擎模板",
|
||||
"templates.description": "采集模板定义屏幕的采集方式。每个模板使用特定的采集引擎(MSS、DXcam、WGC)及自定义设置。将模板分配给设备以获得最佳性能。",
|
||||
"templates.loading": "正在加载模板...",
|
||||
"templates.empty": "尚未配置采集模板",
|
||||
@@ -77,7 +79,7 @@
|
||||
"templates.test.display.select": "选择显示器...",
|
||||
"templates.test.duration": "采集时长(秒):",
|
||||
"templates.test.border_width": "边框宽度(像素):",
|
||||
"templates.test.run": "\uD83E\uDDEA 运行",
|
||||
"templates.test.run": "运行",
|
||||
"templates.test.running": "正在运行测试...",
|
||||
"templates.test.results.preview": "全幅采集预览",
|
||||
"templates.test.results.borders": "边框提取",
|
||||
@@ -97,7 +99,7 @@
|
||||
"templates.test.error.no_engine": "请选择采集引擎",
|
||||
"templates.test.error.no_display": "请选择显示器",
|
||||
"templates.test.error.failed": "测试失败",
|
||||
"devices.title": "\uD83D\uDCA1 设备",
|
||||
"devices.title": "设备",
|
||||
"devices.add": "添加新设备",
|
||||
"devices.loading": "正在加载设备...",
|
||||
"devices.none": "尚未配置设备",
|
||||
@@ -180,7 +182,7 @@
|
||||
"device.tip.calibrate": "校准 LED 位置、方向和覆盖范围",
|
||||
"device.tip.webui": "打开设备内置的 Web 界面进行高级配置",
|
||||
"device.tip.add": "点击此处添加新的 LED 设备",
|
||||
"settings.title": "设备设置",
|
||||
"settings.title": "设置",
|
||||
"settings.general.title": "常规设置",
|
||||
"settings.capture.title": "采集设置",
|
||||
"settings.capture.saved": "采集设置已更新",
|
||||
@@ -285,12 +287,12 @@
|
||||
"section.filter.reset": "清除筛选",
|
||||
"section.expand_all": "全部展开",
|
||||
"section.collapse_all": "全部折叠",
|
||||
"streams.title": "\uD83D\uDCFA 源",
|
||||
"streams.title": "源",
|
||||
"streams.description": "源定义采集管线。原始源使用采集模板从显示器采集。处理源对另一个源应用后处理。将源分配给设备。",
|
||||
"streams.group.raw": "屏幕采集",
|
||||
"streams.group.processed": "已处理",
|
||||
"streams.group.audio": "音频",
|
||||
"streams.section.streams": "\uD83D\uDCFA 源",
|
||||
"streams.section.streams": "源",
|
||||
"streams.add": "添加源",
|
||||
"streams.add.raw": "添加屏幕采集",
|
||||
"streams.add.processed": "添加处理源",
|
||||
@@ -322,11 +324,11 @@
|
||||
"streams.error.required": "请填写所有必填项",
|
||||
"streams.error.delete": "删除源失败",
|
||||
"streams.test.title": "测试源",
|
||||
"streams.test.run": "🧪 运行",
|
||||
"streams.test.run": "运行",
|
||||
"streams.test.running": "正在测试源...",
|
||||
"streams.test.duration": "采集时长(秒):",
|
||||
"streams.test.error.failed": "源测试失败",
|
||||
"postprocessing.title": "\uD83D\uDCC4 滤镜模板",
|
||||
"postprocessing.title": "滤镜模板",
|
||||
"postprocessing.description": "处理模板定义图像滤镜和色彩校正。将它们分配给处理图片源以实现跨设备的一致后处理。",
|
||||
"postprocessing.add": "添加滤镜模板",
|
||||
"postprocessing.edit": "编辑滤镜模板",
|
||||
@@ -363,7 +365,7 @@
|
||||
"postprocessing.test.error.no_stream": "请选择一个源",
|
||||
"postprocessing.test.error.failed": "处理模板测试失败",
|
||||
"device.button.stream_selector": "源设置",
|
||||
"device.stream_settings.title": "📺 源设置",
|
||||
"device.stream_settings.title": "源设置",
|
||||
"device.stream_selector.label": "源:",
|
||||
"device.stream_selector.hint": "选择一个源来定义此设备采集和处理的内容",
|
||||
"device.stream_selector.none": "-- 未分配源 --",
|
||||
@@ -388,13 +390,13 @@
|
||||
"streams.validate_image.validating": "正在验证...",
|
||||
"streams.validate_image.valid": "图片可访问",
|
||||
"streams.validate_image.invalid": "图片不可访问",
|
||||
"targets.title": "⚡ 目标",
|
||||
"targets.title": "目标",
|
||||
"targets.description": "目标将色带源桥接到输出设备。每个目标引用一个设备和一个色带源。",
|
||||
"targets.subtab.wled": "LED",
|
||||
"targets.subtab.led": "LED",
|
||||
"targets.section.devices": "💡 设备",
|
||||
"targets.section.color_strips": "🎞️ 色带源",
|
||||
"targets.section.targets": "⚡ 目标",
|
||||
"targets.section.devices": "设备",
|
||||
"targets.section.color_strips": "色带源",
|
||||
"targets.section.targets": "目标",
|
||||
"targets.section.specific_settings": "特定设置",
|
||||
"targets.add": "添加目标",
|
||||
"targets.edit": "编辑目标",
|
||||
@@ -444,7 +446,7 @@
|
||||
"targets.metrics.frames": "帧数",
|
||||
"targets.metrics.errors": "错误",
|
||||
"targets.subtab.key_colors": "关键颜色",
|
||||
"targets.section.key_colors": "🎨 关键颜色目标",
|
||||
"targets.section.key_colors": "关键颜色目标",
|
||||
"kc.add": "添加关键颜色目标",
|
||||
"kc.edit": "编辑关键颜色目标",
|
||||
"kc.name": "目标名称:",
|
||||
@@ -476,9 +478,9 @@
|
||||
"kc.colors.none": "尚未提取颜色",
|
||||
"kc.test": "测试",
|
||||
"kc.test.error": "测试失败",
|
||||
"targets.section.pattern_templates": "📄 图案模板",
|
||||
"pattern.add": "📄 添加图案模板",
|
||||
"pattern.edit": "📄 编辑图案模板",
|
||||
"targets.section.pattern_templates": "图案模板",
|
||||
"pattern.add": "添加图案模板",
|
||||
"pattern.edit": "编辑图案模板",
|
||||
"pattern.name": "模板名称:",
|
||||
"pattern.name.placeholder": "我的图案模板",
|
||||
"pattern.description_label": "描述(可选):",
|
||||
@@ -513,7 +515,7 @@
|
||||
"overlay.stopped": "叠加层可视化已停止",
|
||||
"overlay.error.start": "启动叠加层失败",
|
||||
"overlay.error.stop": "停止叠加层失败",
|
||||
"dashboard.title": "📊 仪表盘",
|
||||
"dashboard.title": "仪表盘",
|
||||
"dashboard.section.targets": "目标",
|
||||
"dashboard.section.running": "运行中",
|
||||
"dashboard.section.stopped": "已停止",
|
||||
@@ -532,10 +534,9 @@
|
||||
"dashboard.perf.gpu": "GPU",
|
||||
"dashboard.perf.unavailable": "不可用",
|
||||
"dashboard.poll_interval": "刷新间隔",
|
||||
|
||||
"profiles.title": "\uD83D\uDCCB 配置文件",
|
||||
"profiles.title": "配置文件",
|
||||
"profiles.empty": "尚未配置配置文件。创建一个以自动化目标激活。",
|
||||
"profiles.add": "\uD83D\uDCCB 添加配置文件",
|
||||
"profiles.add": "添加配置文件",
|
||||
"profiles.edit": "编辑配置文件",
|
||||
"profiles.delete.confirm": "删除配置文件 \"{name}\"?",
|
||||
"profiles.name": "名称:",
|
||||
@@ -597,9 +598,8 @@
|
||||
"aria.previous": "上一个",
|
||||
"aria.next": "下一个",
|
||||
"aria.hint": "显示提示",
|
||||
|
||||
"color_strip.add": "🎞️ 添加色带源",
|
||||
"color_strip.edit": "🎞️ 编辑色带源",
|
||||
"color_strip.add": "添加色带源",
|
||||
"color_strip.edit": "编辑色带源",
|
||||
"color_strip.name": "名称:",
|
||||
"color_strip.name.placeholder": "墙壁灯带",
|
||||
"color_strip.picture_source": "图片源:",
|
||||
@@ -786,7 +786,6 @@
|
||||
"color_strip.palette.aurora": "极光",
|
||||
"color_strip.palette.sunset": "日落",
|
||||
"color_strip.palette.ice": "冰",
|
||||
|
||||
"audio_source.title": "音频源",
|
||||
"audio_source.group.multichannel": "多声道",
|
||||
"audio_source.group.mono": "单声道",
|
||||
@@ -829,14 +828,12 @@
|
||||
"audio_source.test.beat": "节拍",
|
||||
"audio_source.test.connecting": "连接中...",
|
||||
"audio_source.test.error": "音频测试失败",
|
||||
|
||||
"audio_template.test": "测试",
|
||||
"audio_template.test.title": "测试音频模板",
|
||||
"audio_template.test.device": "音频设备:",
|
||||
"audio_template.test.device.hint": "选择测试期间要采集的音频设备",
|
||||
"audio_template.test.run": "🧪 运行",
|
||||
|
||||
"audio_template.title": "🎵 音频模板",
|
||||
"audio_template.test.run": "运行",
|
||||
"audio_template.title": "音频模板",
|
||||
"audio_template.add": "添加音频模板",
|
||||
"audio_template.edit": "编辑音频模板",
|
||||
"audio_template.name": "模板名称:",
|
||||
@@ -857,9 +854,8 @@
|
||||
"audio_template.error.engines": "加载音频引擎失败",
|
||||
"audio_template.error.required": "请填写所有必填项",
|
||||
"audio_template.error.delete": "删除音频模板失败",
|
||||
|
||||
"streams.group.value": "值源",
|
||||
"value_source.group.title": "🔢 值源",
|
||||
"value_source.group.title": "值源",
|
||||
"value_source.add": "添加值源",
|
||||
"value_source.edit": "编辑值源",
|
||||
"value_source.name": "名称:",
|
||||
@@ -947,7 +943,6 @@
|
||||
"targets.protocol": "协议:",
|
||||
"targets.protocol.hint": "DDP通过快速UDP发送像素(推荐)。HTTP使用JSON API——较慢但可靠,限制约500个LED。",
|
||||
"targets.protocol.serial": "串口",
|
||||
|
||||
"search.open": "搜索 (Ctrl+K)",
|
||||
"search.placeholder": "搜索实体... (Ctrl+K)",
|
||||
"search.loading": "加载中...",
|
||||
@@ -963,8 +958,6 @@
|
||||
"search.group.pattern_templates": "图案模板",
|
||||
"search.group.audio": "音频源",
|
||||
"search.group.value": "值源",
|
||||
|
||||
"settings.title": "设置",
|
||||
"settings.backup.label": "备份配置",
|
||||
"settings.backup.hint": "将所有配置(设备、目标、流、模板、配置文件)下载为单个 JSON 文件。",
|
||||
"settings.backup.button": "下载备份",
|
||||
@@ -979,7 +972,6 @@
|
||||
"settings.restore.restarting": "服务器正在重启...",
|
||||
"settings.restore.restart_timeout": "服务器未响应。请手动刷新页面。",
|
||||
"settings.button.close": "关闭",
|
||||
|
||||
"settings.auto_backup.label": "自动备份",
|
||||
"settings.auto_backup.hint": "自动定期创建所有配置的备份。当达到最大数量时,旧备份会被自动清理。",
|
||||
"settings.auto_backup.enable": "启用自动备份",
|
||||
@@ -990,7 +982,6 @@
|
||||
"settings.auto_backup.save_error": "保存自动备份设置失败",
|
||||
"settings.auto_backup.last_backup": "上次备份",
|
||||
"settings.auto_backup.never": "从未",
|
||||
|
||||
"settings.saved_backups.label": "已保存的备份",
|
||||
"settings.saved_backups.hint": "存储在服务器上的自动备份文件。下载到本地保存,或删除以释放空间。",
|
||||
"settings.saved_backups.empty": "没有已保存的备份",
|
||||
|
||||
Reference in New Issue
Block a user