{ "app.title": "WLED Grab", "app.version": "Version:", "theme.toggle": "Toggle theme", "locale.change": "Change language", "auth.login": "Login", "auth.logout": "Logout", "auth.authenticated": "โ— Authenticated", "auth.title": "Login to WLED Controller", "auth.message": "Please enter your API key to authenticate and access the WLED 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", "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.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 your WLED device", "device.led_count.hint.auto": "Auto-detected from WLED 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 WLED Web UI", "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.target_fps": "Target FPS", "device.metrics.frames": "Frames", "device.metrics.errors": "Errors", "device.health.online": "WLED Online", "device.health.offline": "WLED Offline", "device.health.checking": "Checking...", "device.tutorial.start": "Start tutorial", "device.tip.metadata": "Device info (LED count, type, color channels) is auto-detected from WLED", "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 WLED's built-in web interface for advanced configuration", "device.tip.add": "Click here to add a new WLED 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 WLED device (0-100%)", "settings.url.hint": "IP address or hostname of your WLED 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 WLED device status (5-600 seconds)", "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.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.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.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", "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 picture sources to output devices. Each target references a device and a source, with its own processing settings.", "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": "Which WLED device to send LED data to", "targets.device.none": "-- Select a device --", "targets.source": "Source:", "targets.source.hint": "Which picture source to capture and process", "targets.source.none": "-- No source assigned --", "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.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.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" }