{ "app.title": "LED Grab", "app.version": "Version:", "app.api_docs": "API Documentation", "theme.toggle": "Toggle theme", "locale.change": "Change language", "auth.login": "Login", "auth.logout": "Logout", "auth.authenticated": "โ— Authenticated", "auth.title": "Login to LED Grab", "auth.message": "Please enter your API key to authenticate and access the LED Grab.", "auth.label": "API Key:", "auth.placeholder": "Enter your API key...", "auth.hint": "Your API key will be stored securely in your browser's local storage.", "auth.button.cancel": "Cancel", "auth.button.login": "Login", "auth.error.required": "Please enter an API key", "auth.success": "Logged in successfully!", "auth.logout.confirm": "Are you sure you want to logout?", "auth.logout.success": "Logged out successfully", "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.information": "Display Information", "displays.legend.primary": "Primary Display", "displays.legend.secondary": "Secondary Display", "displays.badge.primary": "Primary", "displays.badge.secondary": "Secondary", "displays.resolution": "Resolution:", "displays.refresh_rate": "Refresh Rate:", "displays.position": "Position:", "displays.index": "Display Index:", "displays.loading": "Loading displays...", "displays.none": "No displays available", "displays.failed": "Failed to load displays", "displays.picker.title": "Select a Display", "displays.picker.select": "Select display...", "displays.picker.click_to_select": "Click to select this display", "displays.picker.adb_connect": "Connect ADB device", "displays.picker.adb_connect.placeholder": "IP address (e.g. 192.168.2.201)", "displays.picker.adb_connect.button": "Connect", "displays.picker.adb_connect.success": "Device connected", "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.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", "templates.add": "Add Engine Template", "templates.edit": "Edit Engine Template", "templates.name": "Template Name:", "templates.name.placeholder": "My Custom Template", "templates.description.label": "Description (optional):", "templates.description.placeholder": "Describe this template...", "templates.engine": "Capture Engine:", "templates.engine.hint": "Select the screen capture technology to use", "templates.engine.select": "Select an engine...", "templates.engine.unavailable": "Unavailable", "templates.engine.unavailable.hint": "This engine is not available on your system", "templates.config": "Configuration", "templates.config.show": "Show configuration", "templates.config.none": "No additional configuration", "templates.config.default": "Default", "templates.created": "Template created successfully", "templates.updated": "Template updated successfully", "templates.deleted": "Template deleted successfully", "templates.delete.confirm": "Are you sure you want to delete this template?", "templates.error.load": "Failed to load templates", "templates.error.engines": "Failed to load engines", "templates.error.required": "Please fill in all required fields", "templates.error.delete": "Failed to delete template", "templates.test.title": "Test Capture", "templates.test.description": "Test this template before saving to see a capture preview and performance metrics.", "templates.test.display": "Display:", "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.running": "Running test...", "templates.test.results.preview": "Full Capture Preview", "templates.test.results.borders": "Border Extraction", "templates.test.results.top": "Top", "templates.test.results.right": "Right", "templates.test.results.bottom": "Bottom", "templates.test.results.left": "Left", "templates.test.results.performance": "Performance", "templates.test.results.capture_time": "Capture", "templates.test.results.extraction_time": "Extraction", "templates.test.results.total_time": "Total", "templates.test.results.max_fps": "Max FPS", "templates.test.results.duration": "Duration", "templates.test.results.frame_count": "Frames", "templates.test.results.actual_fps": "Actual FPS", "templates.test.results.avg_capture_time": "Avg Capture", "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.add": "Add New Device", "devices.loading": "Loading devices...", "devices.none": "No devices configured", "devices.failed": "Failed to load devices", "devices.wled_config": "WLED Configuration:", "devices.wled_note": "Configure your WLED device (effects, segments, color order, power limits, etc.) using the", "devices.wled_link": "official WLED app", "devices.wled_note_or": "or the built-in", "devices.wled_webui_link": "WLED Web UI", "devices.wled_note_webui": "(open your device's IP in a browser).", "devices.wled_note2": "This controller sends pixel color data and controls brightness per device.", "device.scan": "Auto Discovery", "device.scan.empty": "No devices found", "device.scan.error": "Network scan failed", "device.scan.already_added": "Already added", "device.scan.selected": "Device selected", "device.type": "Device Type:", "device.type.hint": "Select the type of LED controller", "device.serial_port": "Serial Port:", "device.serial_port.hint": "Select the COM port of the Adalight device", "device.serial_port.none": "No serial ports found", "device.led_count_manual.hint": "Number of LEDs on the strip (must match your Arduino sketch)", "device.baud_rate": "Baud Rate:", "device.baud_rate.hint": "Serial communication speed. Higher = more FPS but requires matching Arduino sketch.", "device.url.hint": "IP address or hostname of the device (e.g. http://192.168.1.100)", "device.name": "Device Name:", "device.name.placeholder": "Living Room TV", "device.url": "URL:", "device.url.placeholder": "http://192.168.1.100", "device.led_count": "LED Count:", "device.led_count.hint": "Number of LEDs configured in the device", "device.led_count.hint.auto": "Auto-detected from device", "device.button.add": "Add Device", "device.button.start": "Start", "device.button.stop": "Stop", "device.button.settings": "General Settings", "device.button.capture_settings": "Capture Settings", "device.button.calibrate": "Calibrate", "device.button.remove": "Remove", "device.button.webui": "Open Device Web UI", "device.button.power_off": "Turn Off", "device.power.off_success": "Device turned off", "device.status.connected": "Connected", "device.status.disconnected": "Disconnected", "device.status.error": "Error", "device.status.processing": "Processing", "device.status.idle": "Idle", "device.fps": "FPS:", "device.display": "Display:", "device.remove.confirm": "Are you sure you want to remove this device?", "device.added": "Device added successfully", "device.removed": "Device removed successfully", "device.started": "Processing started", "device.stopped": "Processing stopped", "device.metrics.actual_fps": "Actual FPS", "device.metrics.current_fps": "Current FPS", "device.metrics.target_fps": "Target FPS", "device.metrics.potential_fps": "Potential FPS", "device.metrics.frames": "Frames", "device.metrics.frames_skipped": "Skipped", "device.metrics.keepalive": "Keepalive", "device.metrics.errors": "Errors", "device.metrics.timing": "Pipeline timing:", "device.metrics.device_fps": "Device refresh rate", "device.health.online": "Online", "device.health.offline": "Offline", "device.health.checking": "Checking...", "device.tutorial.start": "Start tutorial", "device.tip.metadata": "Device info (LED count, type, color channels) is auto-detected from the device", "device.tip.brightness": "Slide to adjust device brightness", "device.tip.start": "Start or stop screen capture processing", "device.tip.settings": "Configure general device settings (name, URL, health check)", "device.tip.capture_settings": "Configure capture settings (display, capture template)", "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.general.title": "General Settings", "settings.capture.title": "Capture Settings", "settings.capture.saved": "Capture settings updated", "settings.capture.failed": "Failed to save capture settings", "settings.brightness": "Brightness:", "settings.brightness.hint": "Global brightness for this device (0-100%)", "settings.url.hint": "IP address or hostname of the device", "settings.display_index": "Display:", "settings.display_index.hint": "Which screen to capture for this device", "settings.fps": "Target FPS:", "settings.fps.hint": "Target frames per second (10-90)", "settings.capture_template": "Engine Template:", "settings.capture_template.hint": "Screen capture engine and configuration for this device", "settings.button.cancel": "Cancel", "settings.health_interval": "Health Check Interval (s):", "settings.health_interval.hint": "How often to check the device status (5-600 seconds)", "settings.auto_shutdown": "Auto Restore:", "settings.auto_shutdown.hint": "Restore device to idle state when targets stop or server shuts down", "settings.button.save": "Save Changes", "settings.saved": "Settings saved successfully", "settings.failed": "Failed to save settings", "calibration.title": "LED Calibration", "calibration.tip.led_count": "Enter LED count per edge", "calibration.tip.start_corner": "Click a corner to set the start position", "calibration.tip.direction": "Toggle LED strip direction (clockwise / counterclockwise)", "calibration.tip.offset": "Set LED offset โ€” distance from LED 0 to the start corner", "calibration.tip.span": "Drag green bars to adjust coverage span", "calibration.tip.test": "Click an edge to toggle test LEDs", "calibration.tip.toggle_inputs": "Click total LED count to toggle edge inputs", "calibration.tip.border_width": "How many pixels from the screen edge to sample for LED colors", "calibration.tip.skip_leds_start": "Skip LEDs at the start of the strip โ€” skipped LEDs stay off", "calibration.tip.skip_leds_end": "Skip LEDs at the end of the strip โ€” skipped LEDs stay off", "calibration.tutorial.start": "Start tutorial", "calibration.start_position": "Starting Position:", "calibration.position.bottom_left": "Bottom Left", "calibration.position.bottom_right": "Bottom Right", "calibration.position.top_left": "Top Left", "calibration.position.top_right": "Top Right", "calibration.direction": "Direction:", "calibration.direction.clockwise": "Clockwise", "calibration.direction.counterclockwise": "Counterclockwise", "calibration.leds.top": "Top LEDs:", "calibration.leds.right": "Right LEDs:", "calibration.leds.bottom": "Bottom LEDs:", "calibration.leds.left": "Left LEDs:", "calibration.offset": "LED Offset:", "calibration.offset.hint": "Distance from physical LED 0 to the start corner (along strip direction)", "calibration.skip_start": "Skip LEDs (Start):", "calibration.skip_start.hint": "Number of LEDs to turn off at the beginning of the strip (0 = none)", "calibration.skip_end": "Skip LEDs (End):", "calibration.skip_end.hint": "Number of LEDs to turn off at the end of the strip (0 = none)", "calibration.border_width": "Border (px):", "calibration.border_width.hint": "How many pixels from the screen edge to sample for LED colors (1-100)", "calibration.button.cancel": "Cancel", "calibration.button.save": "Save", "calibration.saved": "Calibration saved successfully", "calibration.failed": "Failed to save calibration", "server.healthy": "Server online", "server.offline": "Server offline", "error.unauthorized": "Unauthorized - please login", "error.network": "Network error", "error.unknown": "An error occurred", "modal.discard_changes": "You have unsaved changes. Discard them?", "confirm.title": "Confirm Action", "confirm.yes": "Yes", "confirm.no": "No", "common.loading": "Loading...", "common.delete": "Delete", "common.edit": "Edit", "common.clone": "Clone", "section.filter.placeholder": "Filter...", "streams.title": "\uD83D\uDCFA 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.add": "Add Source", "streams.add.raw": "Add Screen Capture", "streams.add.processed": "Add Processed Source", "streams.edit": "Edit Source", "streams.edit.raw": "Edit Screen Capture", "streams.edit.processed": "Edit Processed Source", "streams.name": "Source Name:", "streams.name.placeholder": "My Source", "streams.type": "Type:", "streams.type.raw": "Screen Capture", "streams.type.processed": "Processed", "streams.display": "Display:", "streams.display.hint": "Which screen to capture", "streams.capture_template": "Engine Template:", "streams.capture_template.hint": "Engine template defining how the screen is captured", "streams.target_fps": "Target FPS:", "streams.target_fps.hint": "Target frames per second for capture (1-90)", "streams.source": "Source:", "streams.source.hint": "The source to apply processing filters to", "streams.pp_template": "Filter Template:", "streams.pp_template.hint": "Filter template to apply to the source", "streams.description_label": "Description (optional):", "streams.description_placeholder": "Describe this source...", "streams.created": "Source created successfully", "streams.updated": "Source updated successfully", "streams.deleted": "Source deleted successfully", "streams.delete.confirm": "Are you sure you want to delete this source?", "streams.error.load": "Failed to load sources", "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.running": "Testing source...", "streams.test.duration": "Capture Duration (s):", "streams.test.error.failed": "Source test failed", "postprocessing.title": "\uD83D\uDCC4 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", "postprocessing.name": "Template Name:", "postprocessing.name.placeholder": "My Filter Template", "filters.select_type": "Select filter type...", "filters.add": "Add Filter", "filters.remove": "Remove", "filters.move_up": "Move Up", "filters.move_down": "Move Down", "filters.empty": "No filters added. Use the selector below to add filters.", "filters.brightness": "Brightness", "filters.saturation": "Saturation", "filters.gamma": "Gamma", "filters.downscaler": "Downscaler", "filters.pixelate": "Pixelate", "filters.auto_crop": "Auto Crop", "filters.flip": "Flip", "filters.color_correction": "Color Correction", "filters.filter_template": "Filter Template", "postprocessing.description_label": "Description (optional):", "postprocessing.description_placeholder": "Describe this template...", "postprocessing.created": "Template created successfully", "postprocessing.updated": "Template updated successfully", "postprocessing.deleted": "Template deleted successfully", "postprocessing.delete.confirm": "Are you sure you want to delete this filter template?", "postprocessing.error.load": "Failed to load processing templates", "postprocessing.error.required": "Please fill in all required fields", "postprocessing.error.delete": "Failed to delete processing template", "postprocessing.config.show": "Show settings", "postprocessing.test.title": "Test Filter Template", "postprocessing.test.source_stream": "Source:", "postprocessing.test.running": "Testing processing template...", "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_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 --", "device.stream_selector.saved": "Source settings updated", "device.stream_settings.border_width": "Border Width (px):", "device.stream_settings.border_width_hint": "How many pixels from the screen edge to sample for LED colors (1-100)", "device.stream_settings.interpolation": "Interpolation Mode:", "device.stream_settings.interpolation.average": "Average", "device.stream_settings.interpolation.median": "Median", "device.stream_settings.interpolation.dominant": "Dominant", "device.stream_settings.interpolation_hint": "How to calculate LED color from sampled pixels", "device.stream_settings.smoothing": "Smoothing:", "device.stream_settings.smoothing_hint": "Temporal blending between frames (0=none, 1=full). Reduces flicker.", "device.tip.stream_selector": "Configure picture source and LED projection settings for this device", "streams.group.static_image": "Static Image", "streams.add.static_image": "Add Static Image Source", "streams.edit.static_image": "Edit Static Image Source", "streams.type.static_image": "Static Image", "streams.image_source": "Image Source:", "streams.image_source.placeholder": "https://example.com/image.jpg or C:\\path\\to\\image.png", "streams.image_source.hint": "Enter a URL (http/https) or local file path to an image", "streams.validate_image.validating": "Validating...", "streams.validate_image.valid": "Image accessible", "streams.validate_image.invalid": "Image not accessible", "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.add": "Add Target", "targets.edit": "Edit Target", "targets.loading": "Loading targets...", "targets.none": "No targets configured", "targets.failed": "Failed to load targets", "targets.name": "Target Name:", "targets.name.placeholder": "My Target", "targets.device": "Device:", "targets.device.hint": "Select the LED device to send data to", "targets.device.none": "-- Select a device --", "targets.color_strip_source": "Color Strip Source:", "targets.color_strip_source.hint": "Select the color strip source that provides LED colors for this target", "targets.no_css": "No source", "targets.source": "Source:", "targets.source.hint": "Which picture source to capture and process", "targets.source.none": "-- No source assigned --", "targets.fps": "Target FPS:", "targets.fps.hint": "Target frames per second for capture and LED updates (1-90)", "targets.fps.rec": "Hardware max โ‰ˆ {fps} fps ({leds} LEDs)", "targets.border_width": "Border Width (px):", "targets.border_width.hint": "How many pixels from the screen edge to sample for LED colors (1-100)", "targets.interpolation": "Interpolation Mode:", "targets.interpolation.hint": "How to calculate LED color from sampled pixels", "targets.interpolation.average": "Average", "targets.interpolation.median": "Median", "targets.interpolation.dominant": "Dominant", "targets.smoothing": "Smoothing:", "targets.smoothing.hint": "Temporal blending between frames (0=none, 1=full). Reduces flicker.", "targets.keepalive_interval": "Keep Alive Interval:", "targets.keepalive_interval.hint": "How often to resend the last frame when the source is static, keeping the device in live mode (0.5-5.0s)", "targets.created": "Target created successfully", "targets.updated": "Target updated successfully", "targets.deleted": "Target deleted successfully", "targets.delete.confirm": "Are you sure you want to delete this target?", "targets.error.load": "Failed to load targets", "targets.error.required": "Please fill in all required fields", "targets.error.name_required": "Please enter a target name", "targets.error.delete": "Failed to delete target", "targets.button.start": "Start", "targets.button.stop": "Stop", "targets.status.processing": "Processing", "targets.status.idle": "Idle", "targets.status.error": "Error", "targets.metrics.actual_fps": "Actual FPS", "targets.metrics.target_fps": "Target FPS", "targets.metrics.frames": "Frames", "targets.metrics.errors": "Errors", "targets.subtab.key_colors": "Key Colors", "targets.section.key_colors": "๐ŸŽจ Key Colors Targets", "kc.add": "Add Key Colors Target", "kc.edit": "Edit Key Colors Target", "kc.name": "Target Name:", "kc.name.placeholder": "My Key Colors Target", "kc.source": "Picture Source:", "kc.source.hint": "Which picture source to extract colors from", "kc.source.none": "-- No source assigned --", "kc.fps": "Extraction FPS:", "kc.fps.hint": "How many times per second to extract colors (1-60)", "kc.interpolation": "Color Mode:", "kc.interpolation.hint": "How to compute the key color from pixels in each rectangle", "kc.interpolation.average": "Average", "kc.interpolation.median": "Median", "kc.interpolation.dominant": "Dominant", "kc.smoothing": "Smoothing:", "kc.smoothing.hint": "Temporal blending between extractions (0=none, 1=full)", "kc.pattern_template": "Pattern Template:", "kc.pattern_template.hint": "Select the rectangle pattern to use for color extraction", "kc.pattern_template.none": "-- Select a pattern template --", "kc.brightness_vs": "Brightness Source:", "kc.brightness_vs.hint": "Optional value source that dynamically controls brightness each frame (multiplied with the manual brightness slider)", "kc.brightness_vs.none": "None (manual brightness only)", "kc.created": "Key colors target created successfully", "kc.updated": "Key colors target updated successfully", "kc.deleted": "Key colors target deleted successfully", "kc.delete.confirm": "Are you sure you want to delete this key colors target?", "kc.error.no_pattern": "Please select a pattern template", "kc.error.required": "Please fill in all required fields", "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", "pattern.name": "Template Name:", "pattern.name.placeholder": "My Pattern Template", "pattern.description_label": "Description (optional):", "pattern.description_placeholder": "Describe this pattern...", "pattern.rectangles": "Rectangles", "pattern.rect.name": "Name", "pattern.rect.x": "X", "pattern.rect.y": "Y", "pattern.rect.width": "W", "pattern.rect.height": "H", "pattern.rect.add": "Add Rectangle", "pattern.rect.remove": "Remove", "pattern.rect.empty": "No rectangles defined. Add at least one rectangle.", "pattern.created": "Pattern template created successfully", "pattern.updated": "Pattern template updated successfully", "pattern.deleted": "Pattern template deleted successfully", "pattern.delete.confirm": "Are you sure you want to delete this pattern template?", "pattern.delete.referenced": "Cannot delete: this template is referenced by a target", "pattern.error.required": "Please fill in all required fields", "pattern.visual_editor": "Visual Editor", "pattern.capture_bg": "Capture Background", "pattern.source_for_bg": "Source for Background:", "pattern.source_for_bg.none": "-- Select source --", "pattern.delete_selected": "Delete Selected", "pattern.name.hint": "A descriptive name for this rectangle layout", "pattern.description.hint": "Optional notes about where or how this pattern is used", "pattern.visual_editor.hint": "Click + buttons to add rectangles. Drag edges to resize, drag inside to move.", "pattern.rectangles.hint": "Fine-tune rectangle positions and sizes with exact coordinates (0.0 to 1.0)", "overlay.button.show": "Show overlay visualization", "overlay.button.hide": "Hide overlay visualization", "overlay.started": "Overlay visualization started", "overlay.stopped": "Overlay visualization stopped", "overlay.error.start": "Failed to start overlay", "overlay.error.stop": "Failed to stop overlay", "dashboard.title": "๐Ÿ“Š Dashboard", "dashboard.section.targets": "Targets", "dashboard.section.running": "Running", "dashboard.section.stopped": "Stopped", "dashboard.no_targets": "No targets configured", "dashboard.uptime": "Uptime", "dashboard.fps": "FPS", "dashboard.errors": "Errors", "dashboard.device": "Device", "dashboard.stop_all": "Stop All", "dashboard.failed": "Failed to load dashboard", "dashboard.section.profiles": "Profiles", "dashboard.targets": "Targets", "dashboard.section.performance": "System Performance", "dashboard.perf.cpu": "CPU", "dashboard.perf.ram": "RAM", "dashboard.perf.gpu": "GPU", "dashboard.perf.unavailable": "unavailable", "dashboard.poll_interval": "Refresh interval", "profiles.title": "\uD83D\uDCCB Profiles", "profiles.empty": "No profiles configured. Create one to automate target activation.", "profiles.add": "\uD83D\uDCCB Add Profile", "profiles.edit": "Edit Profile", "profiles.delete.confirm": "Delete profile \"{name}\"?", "profiles.name": "Name:", "profiles.name.hint": "A descriptive name for this profile", "profiles.enabled": "Enabled:", "profiles.enabled.hint": "Disabled profiles won't activate even when conditions are met", "profiles.condition_logic": "Condition Logic:", "profiles.condition_logic.hint": "How multiple conditions are combined: ANY (OR) or ALL (AND)", "profiles.condition_logic.or": "Any condition (OR)", "profiles.condition_logic.and": "All conditions (AND)", "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 will never activate automatically", "profiles.condition.application": "Application", "profiles.condition.application.apps": "Applications:", "profiles.condition.application.apps.hint": "Process names, one per line (e.g. firefox.exe)", "profiles.condition.application.browse": "Browse", "profiles.condition.application.search": "Filter processes...", "profiles.condition.application.no_processes": "No processes found", "profiles.condition.application.match_type": "Match Type:", "profiles.condition.application.match_type.hint": "How to detect the application", "profiles.condition.application.match_type.running": "Running", "profiles.condition.application.match_type.topmost": "Topmost (foreground)", "profiles.condition.application.match_type.topmost_fullscreen": "Topmost + Fullscreen", "profiles.condition.application.match_type.fullscreen": "Fullscreen", "profiles.targets": "Targets:", "profiles.targets.hint": "Targets to start when this profile activates", "profiles.targets.empty": "No targets available", "profiles.status.active": "Active", "profiles.status.inactive": "Inactive", "profiles.status.disabled": "Disabled", "profiles.action.disable": "Disable", "profiles.last_activated": "Last activated", "profiles.logic.and": " AND ", "profiles.logic.or": " OR ", "profiles.logic.all": "ALL", "profiles.logic.any": "ANY", "profiles.updated": "Profile updated", "profiles.created": "Profile created", "profiles.deleted": "Profile deleted", "profiles.error.name_required": "Name is required", "profiles.toggle_all.start": "Start all targets", "profiles.toggle_all.stop": "Stop all targets", "time.hours_minutes": "{h}h {m}m", "time.minutes_seconds": "{m}m {s}s", "time.seconds": "{s}s", "dashboard.type.led": "LED", "dashboard.type.kc": "Key Colors", "aria.close": "Close", "aria.save": "Save", "aria.cancel": "Cancel", "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.name": "Name:", "color_strip.name.placeholder": "Wall Strip", "color_strip.picture_source": "Picture Source:", "color_strip.picture_source.hint": "Which screen capture source to use as input for LED color calculation", "color_strip.fps": "Target FPS:", "color_strip.fps.hint": "Target frames per second for LED color updates (10-90)", "color_strip.interpolation": "Color Mode:", "color_strip.interpolation.hint": "How to calculate LED color from sampled border pixels", "color_strip.interpolation.average": "Average", "color_strip.interpolation.median": "Median", "color_strip.interpolation.dominant": "Dominant", "color_strip.smoothing": "Smoothing:", "color_strip.smoothing.hint": "Temporal blending between frames (0=none, 1=full). Reduces flicker.", "color_strip.frame_interpolation": "Frame Interpolation:", "color_strip.frame_interpolation.hint": "Blends between consecutive captured frames to produce output at the full target FPS even when capture rate is lower. Reduces visible stepping on slow ambient transitions.", "color_strip.color_corrections": "Color Corrections", "color_strip.brightness": "Brightness:", "color_strip.brightness.hint": "Output brightness multiplier (0=off, 1=unchanged, 2=double). Applied after color extraction.", "color_strip.saturation": "Saturation:", "color_strip.saturation.hint": "Color saturation (0=grayscale, 1=unchanged, 2=double saturation)", "color_strip.gamma": "Gamma:", "color_strip.gamma.hint": "Gamma correction (1=none, <1=brighter midtones, >1=darker midtones)", "color_strip.test_device": "Test on Device:", "color_strip.test_device.hint": "Select a device to send test pixels to when clicking edge toggles", "color_strip.leds": "LED count", "color_strip.led_count": "LED Count:", "color_strip.led_count.hint": "Total number of LEDs on the physical strip. For screen sources: 0 = auto from calibration (extra LEDs not mapped to edges will be black). For static color: set to match your device LED count.", "color_strip.created": "Color strip source created", "color_strip.updated": "Color strip source updated", "color_strip.deleted": "Color strip source deleted", "color_strip.delete.confirm": "Are you sure you want to delete this color strip source?", "color_strip.delete.referenced": "Cannot delete: this source is in use by a target", "color_strip.error.name_required": "Please enter a name", "color_strip.type": "Type:", "color_strip.type.hint": "Picture Source derives LED colors from a screen capture. Static Color fills all LEDs with a single constant color. Gradient distributes a color gradient across all LEDs. Color Cycle smoothly cycles through a user-defined list of colors. Composite stacks multiple sources as blended layers. Audio Reactive drives LEDs from real-time audio input.", "color_strip.type.picture": "Picture Source", "color_strip.type.static": "Static Color", "color_strip.type.gradient": "Gradient", "color_strip.type.color_cycle": "Color Cycle", "color_strip.static_color": "Color:", "color_strip.static_color.hint": "The solid color that will be sent to all LEDs on the strip.", "color_strip.gradient.preview": "Gradient:", "color_strip.gradient.preview.hint": "Visual preview. Click the marker track below to add a stop. Drag markers to reposition.", "color_strip.gradient.stops": "Color Stops:", "color_strip.gradient.stops.hint": "Each stop defines a color at a relative position (0.0 = start, 1.0 = end). The โ†” button adds a right-side color to create a hard edge at that stop.", "color_strip.gradient.stops_count": "stops", "color_strip.gradient.add_stop": "+ Add Stop", "color_strip.gradient.position": "Position (0.0โ€“1.0)", "color_strip.gradient.bidir.hint": "Add a second color on the right side of this stop to create a hard edge in the gradient.", "color_strip.gradient.min_stops": "Gradient must have at least 2 stops", "color_strip.gradient.preset": "Preset:", "color_strip.gradient.preset.hint": "Load a predefined gradient palette. Selecting a preset replaces the current stops.", "color_strip.gradient.preset.custom": "โ€” Custom โ€”", "color_strip.gradient.preset.rainbow": "Rainbow", "color_strip.gradient.preset.sunset": "Sunset", "color_strip.gradient.preset.ocean": "Ocean", "color_strip.gradient.preset.forest": "Forest", "color_strip.gradient.preset.fire": "Fire", "color_strip.gradient.preset.lava": "Lava", "color_strip.gradient.preset.aurora": "Aurora", "color_strip.gradient.preset.ice": "Ice", "color_strip.gradient.preset.warm": "Warm", "color_strip.gradient.preset.cool": "Cool", "color_strip.gradient.preset.neon": "Neon", "color_strip.gradient.preset.pastel": "Pastel", "color_strip.animation": "Animation", "color_strip.animation.type": "Effect:", "color_strip.animation.type.hint": "Animation effect to apply.", "color_strip.animation.type.none": "None (no animation effect)", "color_strip.animation.type.breathing": "Breathing", "color_strip.animation.type.breathing.desc": "Smooth brightness fade in and out", "color_strip.animation.type.color_cycle": "Color Cycle", "color_strip.animation.type.gradient_shift": "Gradient Shift", "color_strip.animation.type.gradient_shift.desc": "Slides the gradient along the strip", "color_strip.animation.type.wave": "Wave", "color_strip.animation.type.wave.desc": "Sinusoidal brightness wave moving along the strip", "color_strip.animation.type.strobe": "Strobe", "color_strip.animation.type.strobe.desc": "Rapid on/off flashing", "color_strip.animation.type.sparkle": "Sparkle", "color_strip.animation.type.sparkle.desc": "Random LEDs flash briefly", "color_strip.animation.type.pulse": "Pulse", "color_strip.animation.type.pulse.desc": "Sharp brightness pulse with quick fade", "color_strip.animation.type.candle": "Candle", "color_strip.animation.type.candle.desc": "Warm flickering candle-like glow", "color_strip.animation.type.rainbow_fade": "Rainbow Fade", "color_strip.animation.type.rainbow_fade.desc": "Cycles through the entire hue spectrum", "color_strip.animation.speed": "Speed:", "color_strip.animation.speed.hint": "Animation speed multiplier. 1.0 โ‰ˆ one cycle per second for Breathing; higher values cycle faster.", "color_strip.color_cycle.colors": "Colors:", "color_strip.color_cycle.colors.hint": "List of colors to cycle through smoothly. At least 2 required. Default is a full rainbow spectrum.", "color_strip.color_cycle.add_color": "+ Add Color", "color_strip.color_cycle.speed": "Speed:", "color_strip.color_cycle.speed.hint": "Cycle speed multiplier. 1.0 โ‰ˆ one full cycle every 20 seconds; higher values cycle faster.", "color_strip.color_cycle.min_colors": "Color cycle must have at least 2 colors", "color_strip.type.effect": "Effect", "color_strip.type.effect.hint": "Procedural LED effects (fire, meteor, plasma, noise, aurora) generated in real time.", "color_strip.type.composite": "Composite", "color_strip.type.composite.hint": "Stack multiple color strip sources as layers with blend modes and opacity.", "color_strip.type.mapped": "Mapped", "color_strip.type.mapped.hint": "Assign different color strip sources to different LED ranges (zones). Unlike composite which blends layers, mapped places sources side-by-side.", "color_strip.type.audio": "Audio Reactive", "color_strip.type.audio.hint": "LED colors driven by real-time audio input โ€” system audio or microphone.", "color_strip.composite.layers": "Layers:", "color_strip.composite.layers.hint": "Stack multiple color strip sources. First layer is the bottom, last is the top. Each layer can have its own blend mode and opacity.", "color_strip.composite.add_layer": "+ Add Layer", "color_strip.composite.source": "Source", "color_strip.composite.blend_mode": "Blend", "color_strip.composite.blend_mode.normal": "Normal", "color_strip.composite.blend_mode.add": "Add", "color_strip.composite.blend_mode.multiply": "Multiply", "color_strip.composite.blend_mode.screen": "Screen", "color_strip.composite.opacity": "Opacity", "color_strip.composite.enabled": "Enabled", "color_strip.composite.error.min_layers": "At least 1 layer is required", "color_strip.composite.error.no_source": "Each layer must have a source selected", "color_strip.composite.layers_count": "layers", "color_strip.mapped.zones": "Zones:", "color_strip.mapped.zones.hint": "Each zone maps a color strip source to a specific LED range. Zones are placed side-by-side โ€” gaps between zones stay black.", "color_strip.mapped.add_zone": "+ Add Zone", "color_strip.mapped.zone_source": "Source", "color_strip.mapped.zone_start": "Start LED", "color_strip.mapped.zone_end": "End LED", "color_strip.mapped.zone_reverse": "Reverse", "color_strip.mapped.zones_count": "zones", "color_strip.mapped.error.no_source": "Each zone must have a source selected", "color_strip.audio.visualization": "Visualization:", "color_strip.audio.visualization.hint": "How audio data is rendered to LEDs.", "color_strip.audio.viz.spectrum": "Spectrum Analyzer", "color_strip.audio.viz.beat_pulse": "Beat Pulse", "color_strip.audio.viz.vu_meter": "VU Meter", "color_strip.audio.source": "Audio Source:", "color_strip.audio.source.hint": "Mono audio source that provides audio data for this visualization. Create and manage audio sources in the Sources tab.", "color_strip.audio.sensitivity": "Sensitivity:", "color_strip.audio.sensitivity.hint": "Gain multiplier for audio levels. Higher values make LEDs react to quieter sounds.", "color_strip.audio.smoothing": "Smoothing:", "color_strip.audio.smoothing.hint": "Temporal smoothing between frames. Higher values produce smoother but slower-reacting visuals.", "color_strip.audio.palette": "Palette:", "color_strip.audio.palette.hint": "Color palette used for spectrum bars or beat pulse coloring.", "color_strip.audio.color": "Base Color:", "color_strip.audio.color.hint": "Low-level color for VU meter bar.", "color_strip.audio.color_peak": "Peak Color:", "color_strip.audio.color_peak.hint": "High-level color at the top of the VU meter bar.", "color_strip.audio.mirror": "Mirror:", "color_strip.audio.mirror.hint": "Mirror spectrum from center outward: bass in the middle, treble at the edges.", "color_strip.effect.type": "Effect Type:", "color_strip.effect.type.hint": "Choose the procedural algorithm.", "color_strip.effect.fire": "Fire", "color_strip.effect.fire.desc": "Cellular automaton simulating rising flames with heat diffusion", "color_strip.effect.meteor": "Meteor", "color_strip.effect.meteor.desc": "Bright head travels along the strip with an exponential-decay tail", "color_strip.effect.plasma": "Plasma", "color_strip.effect.plasma.desc": "Overlapping sine waves mapped to a palette โ€” classic demo-scene effect", "color_strip.effect.noise": "Noise", "color_strip.effect.noise.desc": "Scrolling fractal value noise mapped to a palette", "color_strip.effect.aurora": "Aurora", "color_strip.effect.aurora.desc": "Layered noise bands that drift and blend โ€” northern lights style", "color_strip.effect.speed": "Speed:", "color_strip.effect.speed.hint": "Speed multiplier for the effect animation (0.1 = very slow, 10.0 = very fast).", "color_strip.effect.palette": "Palette:", "color_strip.effect.palette.hint": "Color palette used to map effect values to RGB colors.", "color_strip.effect.color": "Meteor Color:", "color_strip.effect.color.hint": "Head color for the meteor effect.", "color_strip.effect.intensity": "Intensity:", "color_strip.effect.intensity.hint": "Effect intensity โ€” controls spark rate (fire), tail decay (meteor), or brightness range (aurora).", "color_strip.effect.scale": "Scale:", "color_strip.effect.scale.hint": "Spatial scale โ€” wave frequency (plasma), zoom level (noise), or band width (aurora).", "color_strip.effect.mirror": "Mirror:", "color_strip.effect.mirror.hint": "Bounce mode โ€” the meteor reverses direction at strip ends instead of wrapping.", "color_strip.palette.fire": "Fire", "color_strip.palette.ocean": "Ocean", "color_strip.palette.lava": "Lava", "color_strip.palette.forest": "Forest", "color_strip.palette.rainbow": "Rainbow", "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", "audio_source.add": "Add Audio Source", "audio_source.add.multichannel": "Add Multichannel Source", "audio_source.add.mono": "Add Mono Source", "audio_source.edit": "Edit Audio Source", "audio_source.edit.multichannel": "Edit Multichannel Source", "audio_source.edit.mono": "Edit Mono Source", "audio_source.name": "Name:", "audio_source.name.placeholder": "System Audio", "audio_source.name.hint": "A descriptive name for this audio source", "audio_source.type": "Type:", "audio_source.type.hint": "Multichannel captures all channels from a physical audio device. Mono extracts a single channel from a multichannel source.", "audio_source.type.multichannel": "Multichannel", "audio_source.type.mono": "Mono", "audio_source.device": "Audio Device:", "audio_source.device.hint": "Audio input source. Loopback devices capture system audio output; input devices capture microphone or line-in.", "audio_source.parent": "Parent Source:", "audio_source.parent.hint": "Multichannel source to extract a channel from", "audio_source.channel": "Channel:", "audio_source.channel.hint": "Which audio channel to extract from the multichannel source", "audio_source.channel.mono": "Mono (L+R mix)", "audio_source.channel.left": "Left", "audio_source.channel.right": "Right", "audio_source.description": "Description (optional):", "audio_source.description.placeholder": "Describe this audio source...", "audio_source.description.hint": "Optional notes about this audio source", "audio_source.created": "Audio source created", "audio_source.updated": "Audio source updated", "audio_source.deleted": "Audio source deleted", "audio_source.delete.confirm": "Are you sure you want to delete this audio source?", "audio_source.error.name_required": "Please enter a name", "streams.group.value": "Value Sources", "value_source.group.title": "๐Ÿ”ข Value Sources", "value_source.add": "Add Value Source", "value_source.edit": "Edit Value Source", "value_source.name": "Name:", "value_source.name.placeholder": "Brightness Pulse", "value_source.name.hint": "A descriptive name for this value source", "value_source.type": "Type:", "value_source.type.hint": "Static outputs a constant value. Animated cycles through a waveform. Audio reacts to sound input.", "value_source.type.static": "Static", "value_source.type.animated": "Animated", "value_source.type.audio": "Audio", "value_source.value": "Value:", "value_source.value.hint": "Constant output value (0.0 = off, 1.0 = full brightness)", "value_source.waveform": "Waveform:", "value_source.waveform.hint": "Shape of the brightness animation cycle", "value_source.waveform.sine": "Sine", "value_source.waveform.triangle": "Triangle", "value_source.waveform.square": "Square", "value_source.waveform.sawtooth": "Sawtooth", "value_source.speed": "Speed (cpm):", "value_source.speed.hint": "Cycles per minute โ€” how fast the waveform repeats (1 = very slow, 120 = very fast)", "value_source.min_value": "Min Value:", "value_source.min_value.hint": "Minimum output of the waveform cycle", "value_source.max_value": "Max Value:", "value_source.max_value.hint": "Maximum output of the waveform cycle", "value_source.audio_source": "Audio Source:", "value_source.audio_source.hint": "Mono audio source to read audio levels from", "value_source.mode": "Mode:", "value_source.mode.hint": "RMS measures average volume. Peak tracks loudest moments. Beat triggers on rhythm.", "value_source.mode.rms": "RMS (Volume)", "value_source.mode.peak": "Peak", "value_source.mode.beat": "Beat", "value_source.sensitivity": "Sensitivity:", "value_source.sensitivity.hint": "Gain multiplier for the audio signal (higher = more reactive)", "value_source.smoothing": "Smoothing:", "value_source.smoothing.hint": "Temporal smoothing (0 = instant response, 1 = very smooth/slow)", "value_source.description": "Description (optional):", "value_source.description.placeholder": "Describe this value source...", "value_source.description.hint": "Optional notes about this value source", "value_source.created": "Value source created", "value_source.updated": "Value source updated", "value_source.deleted": "Value source deleted", "value_source.delete.confirm": "Are you sure you want to delete this value source?", "value_source.error.name_required": "Please enter a name", "targets.brightness_vs": "Brightness Source:", "targets.brightness_vs.hint": "Optional value source that dynamically controls brightness each frame (overrides device brightness)", "targets.brightness_vs.none": "None (device brightness)" }