{ "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", "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_toggle": "Toggle Power", "device.power.on_success": "Device turned on", "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.static_color": "Idle Color", "device.static_color.hint": "Color shown when device is idle", "device.static_color.clear": "Clear idle color", "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", "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.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 (10-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", "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": "Color strip source that captures and processes screen pixels into LED colors", "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 (10-90)", "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.standby_interval": "Standby Interval:", "targets.standby_interval.hint": "How often to resend the last frame when the screen 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.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.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", "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.", "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.animation": "Animation", "color_strip.animation.enabled": "Enable Animation:", "color_strip.animation.enabled.hint": "Enables procedural animation. The LEDs will update at 30 fps driven by the selected effect.", "color_strip.animation.type": "Effect:", "color_strip.animation.type.hint": "The animation effect to apply. Breathing works for both static and gradient sources; Gradient Shift and Wave work for gradient sources only.", "color_strip.animation.type.breathing": "Breathing", "color_strip.animation.type.color_cycle": "Color Cycle", "color_strip.animation.type.gradient_shift": "Gradient Shift", "color_strip.animation.type.wave": "Wave", "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" }