Safety & Correctness: - Add confirmation dialogs to Stop All, turnOffDevice - i18n confirm dialog (title, yes, no buttons) - Fix duplicate tutorial-overlay ID - Define missing CSS variables (--radius, --text-primary, --hover-bg, --input-bg) - Fix toast z-index conflict with confirm dialog (2500 → 3000) UX Consistency: - Add backdrop-close to test modals - Add device clone feature (only entity without it) - Add sync clocks to command palette - Replace 20+ hardcoded accent colors with CSS vars/color-mix() - Remove dead .badge duplicate from components.css - Make calibration elements keyboard-accessible (div → button) - Add aria-labels to color picker swatches - Fix pattern canvas mobile horizontal scroll - Fix graph editor mobile bottom clipping Polish: - Add empty-state messages to all CardSection instances - Convert 21 px font-sizes to rem - Add scroll-behavior: smooth with reduced-motion override - Add @media print styles - Add :focus-visible to 4 missing interactive elements - Fix settings modal close label (Cancel → Close) - Fix api-key submit button i18n New Features: - Command palette actions: start/stop targets, activate scenes, enable/disable - Bulk start/stop API endpoints (POST /output-targets/bulk/start|stop) - OS notification history viewer modal - Scene "used by" automation reference count on cards - Clock elapsed time display on Streams tab cards - Device "last seen" relative timestamp on cards - Audio device refresh button in edit modal - Composite layer drag-to-reorder - MQTT settings panel (broker config with JSON persistence) - WebSocket log viewer with level filtering and ring buffer - Runtime log-level adjustment (GET/PUT endpoints + settings UI) - Animated value source waveform canvas preview - Gradient custom preset save/delete (localStorage) - API key read-only display in settings - Backup metadata (file size, auto/manual badges) - Server restart button with confirm + overlay - Partial config export/import per entity type - Progressive disclosure in target editor (Advanced section) CSS Architecture: - Define radius scale tokens (--radius-sm/md/lg/pill) - Scope .cs-filter selectors to remove 7 !important overrides - Consolidate duplicate toggle switch (filter-list → settings-toggle) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1688 lines
96 KiB
JSON
1688 lines
96 KiB
JSON
{
|
||
"app.title": "LED Grab",
|
||
"app.version": "版本:",
|
||
"app.api_docs": "API 文档",
|
||
"app.connection_lost": "服务器不可达",
|
||
"app.connection_retrying": "正在尝试重新连接…",
|
||
"theme.toggle": "切换主题",
|
||
"bg.anim.toggle": "切换动态背景",
|
||
"accent.title": "主题色",
|
||
"accent.custom": "自定义",
|
||
"accent.reset": "重置",
|
||
"locale.change": "切换语言",
|
||
"auth.login": "登录",
|
||
"auth.logout": "退出",
|
||
"auth.authenticated": "● 已认证",
|
||
"auth.title": "登录 LED Grab",
|
||
"auth.message": "请输入 API 密钥以进行身份验证并访问 LED Grab。",
|
||
"auth.label": "API 密钥:",
|
||
"auth.placeholder": "输入您的 API 密钥...",
|
||
"auth.hint": "API 密钥将安全存储在浏览器的本地存储中。",
|
||
"auth.button.cancel": "取消",
|
||
"auth.button.login": "登录",
|
||
"auth.error.required": "请输入 API 密钥",
|
||
"auth.success": "登录成功!",
|
||
"auth.logout.confirm": "确定要退出登录吗?",
|
||
"auth.logout.success": "已成功退出",
|
||
"auth.please_login": "请先登录",
|
||
"auth.session_expired": "会话已过期或 API 密钥无效,请重新登录。",
|
||
"auth.toggle_password": "切换密码可见性",
|
||
"auth.prompt_enter": "Enter your API key:",
|
||
"auth.prompt_update": "Current API key is set. Enter new key to update or leave blank to remove:",
|
||
"api_key.login": "登录",
|
||
"displays.title": "可用显示器",
|
||
"displays.layout": "显示器",
|
||
"displays.information": "显示器信息",
|
||
"displays.legend.primary": "主显示器",
|
||
"displays.legend.secondary": "副显示器",
|
||
"displays.badge.primary": "主",
|
||
"displays.badge.secondary": "副",
|
||
"displays.resolution": "分辨率:",
|
||
"displays.refresh_rate": "刷新率:",
|
||
"displays.position": "位置:",
|
||
"displays.index": "显示器序号:",
|
||
"displays.loading": "正在加载显示器...",
|
||
"displays.none": "没有可用的显示器",
|
||
"displays.failed": "加载显示器失败",
|
||
"displays.picker.title": "选择显示器",
|
||
"displays.picker.title.device": "选择设备",
|
||
"displays.picker.select": "选择显示器...",
|
||
"displays.picker.click_to_select": "点击选择此显示器",
|
||
"displays.picker.adb_connect": "连接 ADB 设备",
|
||
"displays.picker.adb_connect.placeholder": "IP 地址(例如 192.168.2.201)",
|
||
"displays.picker.adb_connect.button": "连接",
|
||
"displays.picker.adb_connect.success": "设备已连接",
|
||
"displays.picker.adb_connect.error": "连接设备失败",
|
||
"displays.picker.adb_disconnect": "断开连接",
|
||
"displays.picker.no_android": "未找到 Android 设备。请通过 USB 连接或在上方输入 IP 地址。",
|
||
"templates.title": "引擎模板",
|
||
"templates.description": "采集模板定义屏幕的采集方式。每个模板使用特定的采集引擎(MSS、DXcam、WGC)及自定义设置。将模板分配给设备以获得最佳性能。",
|
||
"templates.loading": "正在加载模板...",
|
||
"templates.empty": "尚未配置采集模板",
|
||
"templates.add": "添加引擎模板",
|
||
"templates.edit": "编辑引擎模板",
|
||
"templates.name": "模板名称:",
|
||
"templates.name.placeholder": "我的自定义模板",
|
||
"templates.description.label": "描述(可选):",
|
||
"templates.description.placeholder": "描述此模板...",
|
||
"templates.engine": "采集引擎:",
|
||
"templates.engine.hint": "选择要使用的屏幕采集技术",
|
||
"templates.engine.select": "选择引擎...",
|
||
"templates.engine.unavailable": "不可用",
|
||
"templates.engine.unavailable.hint": "此引擎在您的系统上不可用",
|
||
"templates.engine.mss.desc": "跨平台,纯Python",
|
||
"templates.engine.dxcam.desc": "DirectX,低延迟",
|
||
"templates.engine.bettercam.desc": "DirectX,高性能",
|
||
"templates.engine.camera.desc": "USB/IP摄像头捕获",
|
||
"templates.engine.scrcpy.desc": "Android屏幕镜像",
|
||
"templates.engine.wgc.desc": "Windows图形捕获",
|
||
"templates.config": "配置",
|
||
"templates.config.show": "显示配置",
|
||
"templates.config.none": "无额外配置",
|
||
"templates.config.default": "默认",
|
||
"templates.created": "模板创建成功",
|
||
"templates.updated": "模板更新成功",
|
||
"templates.deleted": "模板删除成功",
|
||
"templates.delete.confirm": "确定要删除此模板吗?",
|
||
"templates.error.load": "加载模板失败",
|
||
"templates.error.engines": "加载引擎失败",
|
||
"templates.error.required": "请填写所有必填项",
|
||
"templates.error.delete": "删除模板失败",
|
||
"templates.test.title": "测试采集",
|
||
"templates.test.description": "保存前测试此模板,查看采集预览和性能指标。",
|
||
"templates.test.display": "显示器:",
|
||
"templates.test.display.select": "选择显示器...",
|
||
"templates.test.duration": "采集时长(秒):",
|
||
"templates.test.border_width": "边框宽度(像素):",
|
||
"templates.test.run": "运行",
|
||
"templates.test.running": "正在运行测试...",
|
||
"templates.test.results.preview": "全幅采集预览",
|
||
"templates.test.results.borders": "边框提取",
|
||
"templates.test.results.top": "上",
|
||
"templates.test.results.right": "右",
|
||
"templates.test.results.bottom": "下",
|
||
"templates.test.results.left": "左",
|
||
"templates.test.results.performance": "性能",
|
||
"templates.test.results.capture_time": "采集",
|
||
"templates.test.results.extraction_time": "提取",
|
||
"templates.test.results.total_time": "总计",
|
||
"templates.test.results.max_fps": "最大 FPS",
|
||
"templates.test.results.duration": "时长",
|
||
"templates.test.results.frame_count": "帧数",
|
||
"templates.test.results.actual_fps": "实际 FPS",
|
||
"templates.test.results.avg_capture_time": "平均采集",
|
||
"templates.test.results.resolution": "分辨率:",
|
||
"templates.test.error.no_engine": "请选择采集引擎",
|
||
"templates.test.error.no_display": "请选择显示器",
|
||
"templates.test.error.failed": "测试失败",
|
||
"devices.title": "设备",
|
||
"device.select_type": "选择设备类型",
|
||
"devices.add": "添加新设备",
|
||
"devices.loading": "正在加载设备...",
|
||
"devices.none": "尚未配置设备",
|
||
"devices.failed": "加载设备失败",
|
||
"devices.wled_config": "WLED 配置:",
|
||
"devices.wled_note": "使用以下方式配置您的 WLED 设备(效果、分段、颜色顺序、功率限制等):",
|
||
"devices.wled_link": "官方 WLED 应用",
|
||
"devices.wled_note_or": "或内置的",
|
||
"devices.wled_webui_link": "WLED Web UI",
|
||
"devices.wled_note_webui": "(在浏览器中打开设备 IP 地址)。",
|
||
"devices.wled_note2": "此控制器发送像素颜色数据并控制每个设备的亮度。",
|
||
"device.scan": "自动发现",
|
||
"device.scan.empty": "未找到设备",
|
||
"device.scan.error": "网络扫描失败",
|
||
"device.scan.already_added": "已添加",
|
||
"device.scan.selected": "设备已选择",
|
||
"device.type": "设备类型:",
|
||
"device.type.hint": "选择 LED 控制器的类型",
|
||
"device.type.wled": "WLED",
|
||
"device.type.wled.desc": "通过HTTP/UDP控制的WiFi LED",
|
||
"device.type.adalight": "Adalight",
|
||
"device.type.adalight.desc": "Arduino串口LED协议",
|
||
"device.type.ambiled": "AmbiLED",
|
||
"device.type.ambiled.desc": "AmbiLED串口协议",
|
||
"device.type.mqtt": "MQTT",
|
||
"device.type.mqtt.desc": "通过MQTT代理发布LED数据",
|
||
"device.type.ws": "WebSocket",
|
||
"device.type.ws.desc": "通过WebSocket流式传输LED数据",
|
||
"device.type.openrgb": "OpenRGB",
|
||
"device.type.openrgb.desc": "通过OpenRGB控制RGB外设",
|
||
"device.type.dmx": "DMX",
|
||
"device.type.dmx.desc": "Art-Net / sACN (E1.31) 舞台灯光",
|
||
"device.type.mock": "Mock",
|
||
"device.type.mock.desc": "用于测试的虚拟设备",
|
||
"device.type.espnow": "ESP-NOW",
|
||
"device.type.espnow.desc": "Ultra-low-latency via ESP32 gateway",
|
||
"device.type.hue": "Philips Hue",
|
||
"device.type.hue.desc": "Hue Entertainment API streaming",
|
||
"device.type.usbhid": "USB HID",
|
||
"device.type.usbhid.desc": "USB RGB peripherals (keyboards, mice)",
|
||
"device.type.spi": "SPI Direct",
|
||
"device.type.spi.desc": "Raspberry Pi GPIO/SPI LED strips",
|
||
"device.type.chroma": "Razer Chroma",
|
||
"device.type.chroma.desc": "Razer peripherals via Chroma SDK",
|
||
"device.type.gamesense": "SteelSeries",
|
||
"device.type.gamesense.desc": "SteelSeries peripherals via GameSense",
|
||
"device.chroma.device_type": "Peripheral Type:",
|
||
"device.chroma.device_type.hint": "Which Razer peripheral to control via Chroma SDK",
|
||
"device.gamesense.device_type": "Peripheral Type:",
|
||
"device.gamesense.device_type.hint": "Which SteelSeries peripheral to control via GameSense",
|
||
"device.espnow.peer_mac": "Peer MAC:",
|
||
"device.espnow.peer_mac.hint": "MAC address of the remote ESP32 receiver (e.g. AA:BB:CC:DD:EE:FF)",
|
||
"device.espnow.channel": "WiFi Channel:",
|
||
"device.espnow.channel.hint": "WiFi channel (1-14). Must match the receiver's channel.",
|
||
"device.hue.url": "Bridge IP:",
|
||
"device.hue.url.hint": "IP address of your Hue bridge",
|
||
"device.hue.username": "Bridge Username:",
|
||
"device.hue.username.hint": "Hue bridge application key from pairing",
|
||
"device.hue.client_key": "Client Key:",
|
||
"device.hue.client_key.hint": "Entertainment API client key (hex string from pairing)",
|
||
"device.hue.group_id": "Entertainment Group:",
|
||
"device.hue.group_id.hint": "Entertainment configuration ID from your Hue bridge",
|
||
"device.usbhid.url": "VID:PID:",
|
||
"device.usbhid.url.hint": "USB Vendor:Product ID in hex (e.g. 1532:0084)",
|
||
"device.spi.url": "GPIO/SPI Path:",
|
||
"device.spi.url.hint": "GPIO pin or SPI device path (e.g. spi://gpio:18)",
|
||
"device.spi.speed": "SPI Speed (Hz):",
|
||
"device.spi.speed.hint": "SPI clock speed. 800000 Hz for WS2812, 2400000 Hz for APA102.",
|
||
"device.spi.led_type": "LED Chipset:",
|
||
"device.spi.led_type.hint": "Type of addressable LED strip connected to the GPIO/SPI pin",
|
||
"device.spi.led_type.ws2812b.desc": "Most common, 800 KHz data, 3-wire RGB",
|
||
"device.spi.led_type.ws2812.desc": "Original WS2812, 800 KHz, 3-wire RGB",
|
||
"device.spi.led_type.ws2811.desc": "External driver IC, 400 KHz, 12V strips",
|
||
"device.spi.led_type.sk6812.desc": "Samsung LED, 800 KHz, 3-wire RGB",
|
||
"device.spi.led_type.sk6812_rgbw.desc": "SK6812 with dedicated white channel",
|
||
"device.gamesense.peripheral.keyboard": "Keyboard",
|
||
"device.gamesense.peripheral.keyboard.desc": "Per-key RGB illumination",
|
||
"device.gamesense.peripheral.mouse": "Mouse",
|
||
"device.gamesense.peripheral.mouse.desc": "Mouse RGB zones",
|
||
"device.gamesense.peripheral.headset": "Headset",
|
||
"device.gamesense.peripheral.headset.desc": "Headset earcup lighting",
|
||
"device.gamesense.peripheral.mousepad": "Mousepad",
|
||
"device.gamesense.peripheral.mousepad.desc": "Mousepad edge lighting zones",
|
||
"device.gamesense.peripheral.indicator": "Indicator",
|
||
"device.gamesense.peripheral.indicator.desc": "OLED/LED status indicator",
|
||
"device.dmx_protocol": "DMX 协议:",
|
||
"device.dmx_protocol.hint": "Art-Net 使用 UDP 端口 6454,sACN (E1.31) 使用 UDP 端口 5568",
|
||
"device.dmx_protocol.artnet.desc": "UDP 单播,端口 6454",
|
||
"device.dmx_protocol.sacn.desc": "组播/单播,端口 5568",
|
||
"device.dmx_start_universe": "起始 Universe:",
|
||
"device.dmx_start_universe.hint": "第一个 DMX universe (0-32767)。超过 170 个 LED 时自动使用多个 universe。",
|
||
"device.dmx_start_channel": "起始通道:",
|
||
"device.dmx_start_channel.hint": "universe 中的第一个 DMX 通道 (1-512)",
|
||
"device.dmx.url": "IP 地址:",
|
||
"device.dmx.url.hint": "DMX 节点的 IP 地址(例如 192.168.1.50)",
|
||
"device.dmx.url.placeholder": "192.168.1.50",
|
||
"device.serial_port": "串口:",
|
||
"device.serial_port.hint": "选择 Adalight 设备的 COM 端口",
|
||
"device.serial_port.none": "未找到串口",
|
||
"device.serial_port.select": "选择端口...",
|
||
"device.led_count_manual.hint": "灯带上的 LED 数量(必须与 Arduino 程序匹配)",
|
||
"device.baud_rate": "波特率:",
|
||
"device.baud_rate.hint": "串口通信速率。越高 FPS 越高,但需要与 Arduino 程序匹配。",
|
||
"device.led_type": "LED 类型:",
|
||
"device.led_type.hint": "RGB(3通道)或 RGBW(4通道,带独立白色)",
|
||
"device.send_latency": "发送延迟(毫秒):",
|
||
"device.send_latency.hint": "每帧模拟网络/串口延迟(毫秒)",
|
||
"device.css_processing_template": "色带处理模板:",
|
||
"device.css_processing_template.hint": "应用于此设备所有色带输出的默认处理模板",
|
||
"device.mqtt_topic": "MQTT 主题:",
|
||
"device.mqtt_topic.hint": "用于发布像素数据的 MQTT 主题路径(例如 mqtt://ledgrab/device/name)",
|
||
"device.mqtt_topic.placeholder": "mqtt://ledgrab/device/客厅",
|
||
"device.ws_url": "连接 URL:",
|
||
"device.ws_url.hint": "客户端连接并接收 LED 数据的 WebSocket URL",
|
||
"device.openrgb.url": "OpenRGB URL:",
|
||
"device.openrgb.url.hint": "OpenRGB 服务器地址(例如 openrgb://localhost:6742/0)",
|
||
"device.openrgb.zone": "区域:",
|
||
"device.openrgb.zone.hint": "选择要控制的 LED 区域(全部不选则控制所有区域)",
|
||
"device.openrgb.zone.loading": "加载区域中…",
|
||
"device.openrgb.zone.error": "加载区域失败",
|
||
"device.openrgb.mode": "区域模式:",
|
||
"device.openrgb.mode.hint": "合并模式将所有区域作为一条连续 LED 灯带。独立模式让每个区域独立渲染完整效果。",
|
||
"device.openrgb.mode.combined": "合并灯带",
|
||
"device.openrgb.mode.separate": "独立区域",
|
||
"device.openrgb.added_multiple": "已添加 {count} 个设备",
|
||
"device.type.openrgb": "OpenRGB",
|
||
"device.url.hint": "设备的 IP 地址或主机名(例如 http://192.168.1.100)",
|
||
"device.name": "设备名称:",
|
||
"device.name.placeholder": "客厅电视",
|
||
"device.url": "地址:",
|
||
"device.url.placeholder": "http://192.168.1.100",
|
||
"device.led_count": "LED 数量:",
|
||
"device.led_count.hint": "设备中配置的 LED 数量",
|
||
"device.led_count.hint.auto": "从设备自动检测",
|
||
"device.button.add": "添加设备",
|
||
"device.button.start": "启动",
|
||
"device.button.stop": "停止",
|
||
"device.button.settings": "常规设置",
|
||
"device.button.capture_settings": "采集设置",
|
||
"device.button.calibrate": "校准",
|
||
"device.button.remove": "移除",
|
||
"device.button.webui": "打开设备 Web UI",
|
||
"device.button.power_off": "关闭",
|
||
"device.button.ping": "Ping 设备",
|
||
"device.ping.online": "在线 ({ms}ms)",
|
||
"device.ping.offline": "设备离线",
|
||
"device.ping.error": "Ping 失败",
|
||
"device.power.off_success": "设备已关闭",
|
||
"device.status.connected": "已连接",
|
||
"device.status.disconnected": "已断开",
|
||
"device.status.error": "错误",
|
||
"device.status.processing": "处理中",
|
||
"device.status.idle": "空闲",
|
||
"device.fps": "FPS:",
|
||
"device.display": "显示器:",
|
||
"device.remove.confirm": "确定要移除此设备吗?",
|
||
"device.added": "设备添加成功",
|
||
"device.removed": "设备移除成功",
|
||
"device.started": "处理已启动",
|
||
"device.stopped": "处理已停止",
|
||
"device.metrics.actual_fps": "实际 FPS",
|
||
"device.metrics.current_fps": "当前 FPS",
|
||
"device.metrics.target_fps": "目标 FPS",
|
||
"device.metrics.potential_fps": "潜在 FPS",
|
||
"device.metrics.frames": "帧数",
|
||
"device.metrics.frames_skipped": "已跳过",
|
||
"device.metrics.keepalive": "心跳",
|
||
"device.metrics.errors": "错误",
|
||
"device.metrics.uptime": "运行时长",
|
||
"device.metrics.timing": "管线时序:",
|
||
"device.metrics.device_fps": "设备刷新率",
|
||
"device.health.online": "在线",
|
||
"device.health.offline": "离线",
|
||
"device.health.streaming_unreachable": "流传输期间不可达",
|
||
"device.health.checking": "检测中...",
|
||
"device.last_seen.label": "最近检测",
|
||
"device.last_seen.just_now": "刚刚",
|
||
"device.last_seen.seconds": "%d秒前",
|
||
"device.last_seen.minutes": "%d分钟前",
|
||
"device.last_seen.hours": "%d小时前",
|
||
"device.last_seen.days": "%d天前",
|
||
"device.tutorial.start": "开始教程",
|
||
"device.tip.metadata": "设备信息(LED 数量、类型、颜色通道)从设备自动检测",
|
||
"device.tip.brightness": "滑动调节设备亮度",
|
||
"device.tip.start": "启动或停止屏幕采集处理",
|
||
"device.tip.settings": "配置设备常规设置(名称、地址、健康检查)",
|
||
"device.tip.capture_settings": "配置采集设置(显示器、采集模板)",
|
||
"device.tip.calibrate": "校准 LED 位置、方向和覆盖范围",
|
||
"device.tip.webui": "打开设备内置的 Web 界面进行高级配置",
|
||
"device.tip.add": "点击此处添加新的 LED 设备",
|
||
"settings.title": "设置",
|
||
"settings.general.title": "常规设置",
|
||
"settings.capture.title": "采集设置",
|
||
"settings.capture.saved": "采集设置已更新",
|
||
"settings.capture.failed": "保存采集设置失败",
|
||
"settings.brightness": "亮度:",
|
||
"settings.brightness.hint": "此设备的全局亮度(0-100%)",
|
||
"settings.url.hint": "设备的 IP 地址或主机名",
|
||
"settings.display_index": "显示器:",
|
||
"settings.display_index.hint": "为此设备采集哪个屏幕",
|
||
"settings.fps": "目标 FPS:",
|
||
"settings.fps.hint": "目标帧率(10-90)",
|
||
"settings.capture_template": "引擎模板:",
|
||
"settings.capture_template.hint": "此设备的屏幕采集引擎和配置",
|
||
"settings.button.cancel": "取消",
|
||
"settings.health_interval": "健康检查间隔(秒):",
|
||
"settings.health_interval.hint": "检查设备状态的频率(5-600秒)",
|
||
"settings.auto_shutdown": "自动恢复:",
|
||
"settings.auto_shutdown.hint": "当目标停止或服务器关闭时恢复设备到空闲状态",
|
||
"settings.button.save": "保存更改",
|
||
"settings.saved": "设置保存成功",
|
||
"settings.failed": "保存设置失败",
|
||
"calibration.title": "LED 校准",
|
||
"calibration.tip.led_count": "输入每条边的 LED 数量",
|
||
"calibration.tip.start_corner": "点击角落设置起始位置",
|
||
"calibration.tip.direction": "切换灯带方向(顺时针/逆时针)",
|
||
"calibration.tip.offset": "设置 LED 偏移 — 从 LED 0 到起始角落的距离",
|
||
"calibration.tip.span": "拖动绿色条调整覆盖范围",
|
||
"calibration.tip.test": "点击边缘切换测试 LED",
|
||
"calibration.tip.overlay": "切换屏幕叠加层以查看显示器上的 LED 位置和编号",
|
||
"calibration.tip.toggle_inputs": "点击 LED 总数切换边缘输入",
|
||
"calibration.tip.border_width": "从屏幕边缘采样多少像素来确定 LED 颜色",
|
||
"calibration.tip.skip_leds_start": "跳过灯带起始端的 LED — 被跳过的 LED 保持关闭",
|
||
"calibration.tip.skip_leds_end": "跳过灯带末尾端的 LED — 被跳过的 LED 保持关闭",
|
||
"tour.welcome": "欢迎使用 LED Grab!快速导览将带您了解界面。使用方向键或按钮进行导航。",
|
||
"tour.dashboard": "仪表盘 — 实时查看运行中的目标、自动化和设备状态。",
|
||
"tour.targets": "目标 — 添加 WLED 设备,配置 LED 目标的捕获设置和校准。",
|
||
"tour.sources": "来源 — 管理捕获模板、图片来源、音频来源和色带。",
|
||
"tour.graph": "图表 — 所有实体及其连接的可视化概览。拖动端口进行连接,右键单击边线断开连接。",
|
||
"tour.automations": "自动化 — 通过时间、音频或数值条件自动切换场景。",
|
||
"tour.settings": "设置 — 备份和恢复配置,管理自动备份。",
|
||
"tour.api": "API 文档 — 基于 Swagger 的交互式 REST API 文档。",
|
||
"tour.search": "搜索 — 使用 Ctrl+K 快速查找并导航到任意实体。",
|
||
"tour.theme": "主题 — 在深色和浅色模式之间切换。",
|
||
"tour.accent": "主题色 — 自定义界面的强调颜色。",
|
||
"tour.language": "语言 — 选择您偏好的界面语言。",
|
||
"tour.restart": "重新开始导览",
|
||
"tour.dash.perf": "性能 — 实时 FPS 图表、延迟指标和轮询间隔控制。",
|
||
"tour.dash.running": "运行中的目标 — 实时流媒体指标和快速停止控制。",
|
||
"tour.dash.stopped": "已停止的目标 — 一键启动。",
|
||
"tour.dash.automations": "自动化 — 活动自动化状态和快速启用/禁用切换。",
|
||
"tour.tgt.led_tab": "LED 标签 — 标准 LED 灯带目标,包含设备和色带配置。",
|
||
"tour.tgt.devices": "设备 — 在网络中发现的 LED 控制器。",
|
||
"tour.tgt.css": "色带 — 定义屏幕区域如何映射到 LED 段。",
|
||
"tour.tgt.targets": "LED 目标 — 将设备、色带和捕获源组合进行流式传输。",
|
||
"tour.tgt.kc_tab": "Key Colors — 使用颜色匹配代替像素映射的替代目标类型。",
|
||
"tour.src.raw": "原始 — 来自显示器的实时屏幕捕获源。",
|
||
"tour.src.templates": "捕获模板 — 可复用的捕获配置(分辨率、FPS、裁剪)。",
|
||
"tour.src.static": "静态图片 — 使用图片文件测试您的设置。",
|
||
"tour.src.processed": "处理 — 应用后处理效果,如模糊、亮度或色彩校正。",
|
||
"tour.src.color_strip": "色带 — 定义屏幕区域如何映射到 LED 段。",
|
||
"tour.src.audio": "音频 — 分析麦克风或系统音频以实现响应式 LED 效果。",
|
||
"tour.src.value": "数值 — 用于自动化条件的数字数据源。",
|
||
"tour.src.sync": "同步时钟 — 在多个源之间同步动画的共享定时器。",
|
||
"tour.auto.list": "自动化 — 基于时间、音频或数值条件自动激活场景。",
|
||
"tour.auto.add": "点击 + 创建包含条件和要激活场景的新自动化。",
|
||
"tour.auto.card": "每张卡片显示自动化状态、条件和快速编辑/切换控制。",
|
||
"tour.auto.scenes_list": "场景 — 保存的系统状态,自动化可以激活或您可以手动应用。",
|
||
"tour.auto.scenes_add": "点击 + 将当前系统状态捕获为新的场景预设。",
|
||
"tour.auto.scenes_card": "每个场景卡片显示目标/设备数量。点击编辑、重新捕获或激活。",
|
||
"calibration.tutorial.start": "开始教程",
|
||
"calibration.overlay_toggle": "叠加层",
|
||
"calibration.start_position": "起始位置:",
|
||
"calibration.position.bottom_left": "左下",
|
||
"calibration.position.bottom_right": "右下",
|
||
"calibration.position.top_left": "左上",
|
||
"calibration.position.top_right": "右上",
|
||
"calibration.direction": "方向:",
|
||
"calibration.direction.clockwise": "顺时针",
|
||
"calibration.direction.counterclockwise": "逆时针",
|
||
"calibration.leds.top": "顶部 LED:",
|
||
"calibration.leds.right": "右侧 LED:",
|
||
"calibration.leds.bottom": "底部 LED:",
|
||
"calibration.leds.left": "左侧 LED:",
|
||
"calibration.offset": "LED 偏移:",
|
||
"calibration.offset.hint": "从物理 LED 0 到起始角落的距离(沿灯带方向)",
|
||
"calibration.skip_start": "跳过 LED(起始):",
|
||
"calibration.skip_start.hint": "灯带起始端关闭的 LED 数量(0 = 无)",
|
||
"calibration.skip_end": "跳过 LED(末尾):",
|
||
"calibration.skip_end.hint": "灯带末尾端关闭的 LED 数量(0 = 无)",
|
||
"calibration.border_width": "边框(像素):",
|
||
"calibration.border_width.hint": "从屏幕边缘采样多少像素来确定 LED 颜色(1-100)",
|
||
"calibration.button.cancel": "取消",
|
||
"calibration.button.save": "保存",
|
||
"calibration.saved": "校准保存成功",
|
||
"calibration.failed": "保存校准失败",
|
||
"server.healthy": "服务器在线",
|
||
"server.offline": "服务器离线",
|
||
"error.unauthorized": "未授权 - 请先登录",
|
||
"error.network": "网络错误",
|
||
"error.unknown": "发生错误",
|
||
"modal.discard_changes": "有未保存的更改。是否放弃?",
|
||
"confirm.title": "确认操作",
|
||
"confirm.yes": "是",
|
||
"confirm.no": "否",
|
||
"confirm.stop_all": "停止所有运行中的目标?",
|
||
"confirm.turn_off_device": "关闭此设备?",
|
||
"common.loading": "加载中...",
|
||
"common.delete": "删除",
|
||
"common.edit": "编辑",
|
||
"common.clone": "克隆",
|
||
"common.none": "无",
|
||
"common.none_no_cspt": "无(无处理模板)",
|
||
"common.none_no_input": "无(无输入源)",
|
||
"common.none_own_speed": "无(使用自身速度)",
|
||
"palette.search": "搜索…",
|
||
"section.filter.placeholder": "筛选...",
|
||
"section.filter.reset": "清除筛选",
|
||
"tags.label": "标签",
|
||
"tags.hint": "为卡片分配标签以进行分组和筛选",
|
||
"tags.placeholder": "添加标签...",
|
||
"section.expand_all": "全部展开",
|
||
"section.collapse_all": "全部折叠",
|
||
"streams.title": "源",
|
||
"streams.description": "源定义采集管线。原始源使用采集模板从显示器采集。处理源对另一个源应用后处理。将源分配给设备。",
|
||
"streams.group.raw": "源",
|
||
"streams.group.raw_templates": "引擎模板",
|
||
"streams.group.processed": "源",
|
||
"streams.group.proc_templates": "滤镜模板",
|
||
"streams.group.css_processing": "处理模板",
|
||
"streams.group.color_strip": "色带源",
|
||
"streams.group.audio": "音频",
|
||
"streams.section.streams": "源",
|
||
"streams.add": "添加源",
|
||
"streams.add.raw": "添加屏幕采集",
|
||
"streams.add.processed": "添加处理源",
|
||
"streams.edit": "编辑源",
|
||
"streams.edit.raw": "编辑屏幕采集",
|
||
"streams.edit.processed": "编辑处理源",
|
||
"streams.name": "源名称:",
|
||
"streams.name.placeholder": "我的源",
|
||
"streams.type": "类型:",
|
||
"streams.type.raw": "屏幕采集",
|
||
"streams.type.processed": "已处理",
|
||
"streams.display": "显示器:",
|
||
"streams.display.hint": "采集哪个屏幕",
|
||
"streams.capture_template": "引擎模板:",
|
||
"streams.capture_template.hint": "定义屏幕采集方式的引擎模板",
|
||
"streams.target_fps": "目标 FPS:",
|
||
"streams.target_fps.hint": "采集的目标帧率(1-90)",
|
||
"streams.source": "源:",
|
||
"streams.source.hint": "要应用处理滤镜的源",
|
||
"streams.pp_template": "滤镜模板:",
|
||
"streams.pp_template.hint": "要应用到源的滤镜模板",
|
||
"streams.description_label": "描述(可选):",
|
||
"streams.description_placeholder": "描述此源...",
|
||
"streams.created": "源创建成功",
|
||
"streams.updated": "源更新成功",
|
||
"streams.deleted": "源删除成功",
|
||
"streams.delete.confirm": "确定要删除此源吗?",
|
||
"streams.modal.loading": "加载中...",
|
||
"streams.error.load": "加载源失败",
|
||
"streams.error.required": "请填写所有必填项",
|
||
"streams.error.delete": "删除源失败",
|
||
"streams.test.title": "测试源",
|
||
"streams.test.run": "运行",
|
||
"streams.test.running": "正在测试源...",
|
||
"streams.test.duration": "采集时长(秒):",
|
||
"streams.test.error.failed": "源测试失败",
|
||
"postprocessing.title": "滤镜模板",
|
||
"postprocessing.description": "处理模板定义图像滤镜和色彩校正。将它们分配给处理图片源以实现跨设备的一致后处理。",
|
||
"postprocessing.add": "添加滤镜模板",
|
||
"postprocessing.edit": "编辑滤镜模板",
|
||
"postprocessing.name": "模板名称:",
|
||
"postprocessing.name.placeholder": "我的滤镜模板",
|
||
"filters.select_type": "选择滤镜类型...",
|
||
"filters.add": "添加滤镜",
|
||
"filters.remove": "移除",
|
||
"filters.drag_to_reorder": "拖动以重新排序",
|
||
"filters.empty": "尚未添加滤镜。使用下方选择器添加滤镜。",
|
||
"filters.brightness": "亮度",
|
||
"filters.brightness.desc": "调整整体图像亮度",
|
||
"filters.saturation": "饱和度",
|
||
"filters.saturation.desc": "增强或降低色彩强度",
|
||
"filters.gamma": "伽马",
|
||
"filters.gamma.desc": "非线性亮度曲线校正",
|
||
"filters.downscaler": "缩小",
|
||
"filters.downscaler.desc": "降低分辨率以加快处理",
|
||
"filters.pixelate": "像素化",
|
||
"filters.pixelate.desc": "马赛克式块平均",
|
||
"filters.auto_crop": "自动裁剪",
|
||
"filters.auto_crop.desc": "移除信箱式内容的黑边",
|
||
"filters.flip": "翻转",
|
||
"filters.flip.desc": "水平或垂直镜像翻转",
|
||
"filters.color_correction": "色彩校正",
|
||
"filters.color_correction.desc": "白平衡和色温调整",
|
||
"filters.filter_template": "滤镜模板",
|
||
"filters.filter_template.desc": "嵌入另一个处理模板",
|
||
"filters.css_filter_template": "色带滤镜模板",
|
||
"filters.css_filter_template.desc": "嵌入另一个色带处理模板",
|
||
"filters.frame_interpolation": "帧插值",
|
||
"filters.frame_interpolation.desc": "帧间混合以获得更平滑的输出",
|
||
"filters.noise_gate": "噪声门",
|
||
"filters.noise_gate.desc": "抑制低于阈值的细微色彩变化",
|
||
"filters.palette_quantization": "调色板量化",
|
||
"filters.palette_quantization.desc": "将颜色减少到有限调色板",
|
||
"filters.reverse": "反转",
|
||
"filters.reverse.desc": "反转色带中的LED顺序",
|
||
"postprocessing.description_label": "描述(可选):",
|
||
"postprocessing.description_placeholder": "描述此模板...",
|
||
"postprocessing.created": "模板创建成功",
|
||
"postprocessing.updated": "模板更新成功",
|
||
"postprocessing.deleted": "模板删除成功",
|
||
"postprocessing.delete.confirm": "确定要删除此滤镜模板吗?",
|
||
"postprocessing.error.load": "加载处理模板失败",
|
||
"postprocessing.error.required": "请填写所有必填项",
|
||
"postprocessing.error.delete": "删除处理模板失败",
|
||
"postprocessing.config.show": "显示设置",
|
||
"postprocessing.test.title": "测试滤镜模板",
|
||
"postprocessing.test.source_stream": "源:",
|
||
"postprocessing.test.running": "正在测试处理模板...",
|
||
"postprocessing.test.error.no_stream": "请选择一个源",
|
||
"postprocessing.test.error.failed": "处理模板测试失败",
|
||
"css_processing.title": "色带处理模板",
|
||
"css_processing.add": "添加色带处理模板",
|
||
"css_processing.edit": "编辑色带处理模板",
|
||
"css_processing.name": "模板名称:",
|
||
"css_processing.name_placeholder": "我的色带处理模板",
|
||
"css_processing.description_label": "描述(可选):",
|
||
"css_processing.description_placeholder": "描述此模板...",
|
||
"css_processing.created": "色带处理模板已创建",
|
||
"css_processing.updated": "色带处理模板已更新",
|
||
"css_processing.deleted": "色带处理模板已删除",
|
||
"css_processing.delete.confirm": "确定要删除此色带处理模板吗?",
|
||
"css_processing.error.required": "请填写所有必填字段",
|
||
"css_processing.error.load": "加载色带处理模板出错",
|
||
"css_processing.error.delete": "删除色带处理模板出错",
|
||
"css_processing.error.clone_failed": "克隆色带处理模板失败",
|
||
"device.button.stream_selector": "源设置",
|
||
"device.stream_settings.title": "源设置",
|
||
"device.stream_selector.label": "源:",
|
||
"device.stream_selector.hint": "选择一个源来定义此设备采集和处理的内容",
|
||
"device.stream_selector.none": "-- 未分配源 --",
|
||
"device.stream_selector.saved": "源设置已更新",
|
||
"device.stream_settings.border_width": "边框宽度(像素):",
|
||
"device.stream_settings.border_width_hint": "从屏幕边缘采样多少像素来确定 LED 颜色(1-100)",
|
||
"device.stream_settings.interpolation": "插值模式:",
|
||
"device.stream_settings.interpolation.average": "平均",
|
||
"device.stream_settings.interpolation.median": "中位数",
|
||
"device.stream_settings.interpolation.dominant": "主色",
|
||
"device.stream_settings.interpolation_hint": "如何从采样像素计算 LED 颜色",
|
||
"device.stream_settings.smoothing": "平滑:",
|
||
"device.stream_settings.smoothing_hint": "帧间时间混合(0=无,1=完全)。减少闪烁。",
|
||
"device.tip.stream_selector": "为此设备配置图片源和 LED 投影设置",
|
||
"streams.group.static_image": "静态图片",
|
||
"streams.add.static_image": "添加静态图片源",
|
||
"streams.edit.static_image": "编辑静态图片源",
|
||
"streams.type.static_image": "静态图片",
|
||
"streams.group.video": "视频",
|
||
"streams.add.video": "添加视频源",
|
||
"streams.edit.video": "编辑视频源",
|
||
"picture_source.type.video": "视频",
|
||
"picture_source.type.video.desc": "从视频文件、URL或YouTube流式传输帧",
|
||
"picture_source.video.url": "视频URL:",
|
||
"picture_source.video.url.hint": "本地文件路径、HTTP URL或YouTube URL",
|
||
"picture_source.video.url.placeholder": "https://example.com/video.mp4",
|
||
"picture_source.video.loop": "循环:",
|
||
"picture_source.video.speed": "播放速度:",
|
||
"picture_source.video.start_time": "开始时间(秒):",
|
||
"picture_source.video.end_time": "结束时间(秒):",
|
||
"picture_source.video.resolution_limit": "最大宽度(像素):",
|
||
"picture_source.video.resolution_limit.hint": "解码时缩小视频以提高性能",
|
||
"streams.image_source": "图片源:",
|
||
"streams.image_source.placeholder": "https://example.com/image.jpg 或 C:\\path\\to\\image.png",
|
||
"streams.image_source.hint": "输入图片的 URL(http/https)或本地文件路径",
|
||
"streams.validate_image.validating": "正在验证...",
|
||
"streams.validate_image.valid": "图片可访问",
|
||
"streams.validate_image.invalid": "图片不可访问",
|
||
"targets.title": "目标",
|
||
"targets.description": "目标将色带源桥接到输出设备。每个目标引用一个设备和一个色带源。",
|
||
"targets.subtab.wled": "LED",
|
||
"targets.subtab.led": "LED",
|
||
"targets.section.devices": "设备",
|
||
"targets.section.color_strips": "色带源",
|
||
"targets.section.targets": "目标",
|
||
"targets.section.specific_settings": "特定设置",
|
||
"targets.section.advanced": "高级",
|
||
"targets.add": "添加目标",
|
||
"targets.edit": "编辑目标",
|
||
"targets.loading": "正在加载目标...",
|
||
"targets.none": "尚未配置目标",
|
||
"targets.failed": "加载目标失败",
|
||
"targets.name": "目标名称:",
|
||
"targets.name.placeholder": "我的目标",
|
||
"targets.device": "设备:",
|
||
"targets.device.hint": "选择要发送数据的 LED 设备",
|
||
"targets.device.none": "-- 选择设备 --",
|
||
"targets.color_strip_source": "色带源:",
|
||
"targets.color_strip_source.hint": "选择为此目标提供 LED 颜色的色带源",
|
||
"targets.no_css": "无源",
|
||
"targets.source": "源:",
|
||
"targets.source.hint": "要采集和处理的图片源",
|
||
"targets.source.none": "-- 未分配源 --",
|
||
"targets.metrics.pipeline": "管线详情",
|
||
"targets.fps": "目标 FPS:",
|
||
"targets.fps.hint": "采集和 LED 更新的目标帧率(1-90)",
|
||
"targets.fps.rec": "硬件最大 ≈ {fps} fps({leds} 个 LED)",
|
||
"targets.border_width": "边框宽度(像素):",
|
||
"targets.border_width.hint": "从屏幕边缘采样多少像素来确定 LED 颜色(1-100)",
|
||
"targets.interpolation": "插值模式:",
|
||
"targets.interpolation.hint": "如何从采样像素计算 LED 颜色",
|
||
"targets.interpolation.average": "平均",
|
||
"targets.interpolation.median": "中位数",
|
||
"targets.interpolation.dominant": "主色",
|
||
"targets.smoothing": "平滑:",
|
||
"targets.smoothing.hint": "帧间时间混合(0=无,1=完全)。减少闪烁。",
|
||
"targets.keepalive_interval": "心跳间隔:",
|
||
"targets.keepalive_interval.hint": "源静态时重新发送最后一帧的频率,保持设备在活动模式(0.5-5.0秒)",
|
||
"targets.created": "目标创建成功",
|
||
"targets.updated": "目标更新成功",
|
||
"targets.deleted": "目标删除成功",
|
||
"targets.delete.confirm": "确定要删除此目标吗?",
|
||
"targets.error.load": "加载目标失败",
|
||
"targets.error.required": "请填写所有必填项",
|
||
"targets.error.name_required": "请输入目标名称",
|
||
"targets.error.delete": "删除目标失败",
|
||
"targets.button.start": "启动",
|
||
"targets.button.stop": "停止",
|
||
"targets.status.processing": "处理中",
|
||
"targets.status.idle": "空闲",
|
||
"targets.status.error": "错误",
|
||
"targets.metrics.actual_fps": "实际 FPS",
|
||
"targets.metrics.target_fps": "目标 FPS",
|
||
"targets.metrics.frames": "帧数",
|
||
"targets.metrics.errors": "错误",
|
||
"targets.subtab.key_colors": "关键颜色",
|
||
"targets.section.key_colors": "关键颜色目标",
|
||
"kc.add": "添加关键颜色目标",
|
||
"kc.edit": "编辑关键颜色目标",
|
||
"kc.name": "目标名称:",
|
||
"kc.name.placeholder": "我的关键颜色目标",
|
||
"kc.source": "图片源:",
|
||
"kc.source.hint": "从哪个图片源提取颜色",
|
||
"kc.source.none": "-- 未分配源 --",
|
||
"kc.fps": "提取 FPS:",
|
||
"kc.fps.hint": "每秒提取颜色的次数(1-60)",
|
||
"kc.interpolation": "颜色模式:",
|
||
"kc.interpolation.hint": "如何从每个矩形中的像素计算关键颜色",
|
||
"kc.interpolation.average": "平均",
|
||
"kc.interpolation.median": "中位数",
|
||
"kc.interpolation.dominant": "主色",
|
||
"kc.interpolation.average.desc": "所有像素颜色的平均值",
|
||
"kc.interpolation.median.desc": "每通道中间颜色值",
|
||
"kc.interpolation.dominant.desc": "出现最频繁的颜色",
|
||
"kc.smoothing": "平滑:",
|
||
"kc.smoothing.hint": "提取间的时间混合(0=无,1=完全)",
|
||
"kc.pattern_template": "图案模板:",
|
||
"kc.pattern_template.hint": "选择用于颜色提取的矩形图案",
|
||
"kc.pattern_template.none": "-- 选择图案模板 --",
|
||
"kc.brightness_vs": "亮度源:",
|
||
"kc.brightness_vs.hint": "可选的值源,每帧动态控制亮度(与手动亮度滑块相乘)",
|
||
"kc.brightness_vs.none": "无(仅手动亮度)",
|
||
"kc.created": "关键颜色目标创建成功",
|
||
"kc.updated": "关键颜色目标更新成功",
|
||
"kc.deleted": "关键颜色目标删除成功",
|
||
"kc.delete.confirm": "确定要删除此关键颜色目标吗?",
|
||
"kc.error.no_pattern": "请选择图案模板",
|
||
"kc.error.required": "请填写所有必填项",
|
||
"kc.colors.none": "尚未提取颜色",
|
||
"kc.test": "测试",
|
||
"kc.test.error": "测试失败",
|
||
"targets.section.pattern_templates": "图案模板",
|
||
"pattern.add": "添加图案模板",
|
||
"pattern.edit": "编辑图案模板",
|
||
"pattern.name": "模板名称:",
|
||
"pattern.name.placeholder": "我的图案模板",
|
||
"pattern.description_label": "描述(可选):",
|
||
"pattern.description_placeholder": "描述此图案...",
|
||
"pattern.rectangles": "矩形",
|
||
"pattern.rect.name": "名称",
|
||
"pattern.rect.x": "X",
|
||
"pattern.rect.y": "Y",
|
||
"pattern.rect.width": "宽",
|
||
"pattern.rect.height": "高",
|
||
"pattern.rect.add": "添加矩形",
|
||
"pattern.rect.remove": "移除",
|
||
"pattern.rect.empty": "尚未定义矩形。请至少添加一个矩形。",
|
||
"pattern.created": "图案模板创建成功",
|
||
"pattern.updated": "图案模板更新成功",
|
||
"pattern.deleted": "图案模板删除成功",
|
||
"pattern.delete.confirm": "确定要删除此图案模板吗?",
|
||
"pattern.delete.referenced": "无法删除:此模板正被目标引用",
|
||
"pattern.error.required": "请填写所有必填项",
|
||
"pattern.visual_editor": "可视编辑器",
|
||
"pattern.capture_bg": "采集背景",
|
||
"pattern.source_for_bg": "背景源:",
|
||
"pattern.source_for_bg.none": "-- 选择源 --",
|
||
"pattern.delete_selected": "删除选中",
|
||
"pattern.name.hint": "此矩形布局的描述性名称",
|
||
"pattern.description.hint": "关于此图案使用位置或方式的可选说明",
|
||
"pattern.visual_editor.hint": "点击 + 按钮添加矩形。拖动边缘调整大小,拖动内部移动位置。",
|
||
"pattern.rectangles.hint": "用精确坐标(0.0 到 1.0)微调矩形位置和大小",
|
||
"overlay.toggle": "切换屏幕叠加层",
|
||
"overlay.button.show": "显示叠加层可视化",
|
||
"overlay.button.hide": "隐藏叠加层可视化",
|
||
"overlay.started": "叠加层可视化已启动",
|
||
"overlay.stopped": "叠加层可视化已停止",
|
||
"overlay.error.start": "启动叠加层失败",
|
||
"overlay.error.stop": "停止叠加层失败",
|
||
"dashboard.title": "仪表盘",
|
||
"dashboard.section.targets": "目标",
|
||
"dashboard.section.running": "运行中",
|
||
"dashboard.section.stopped": "已停止",
|
||
"dashboard.no_targets": "尚未配置目标",
|
||
"dashboard.uptime": "运行时长",
|
||
"dashboard.fps": "FPS",
|
||
"dashboard.errors": "错误",
|
||
"dashboard.device": "设备",
|
||
"dashboard.stop_all": "全部停止",
|
||
"dashboard.failed": "加载仪表盘失败",
|
||
"dashboard.section.automations": "自动化",
|
||
"dashboard.section.scenes": "场景预设",
|
||
"dashboard.section.sync_clocks": "同步时钟",
|
||
"dashboard.targets": "目标",
|
||
"dashboard.section.performance": "系统性能",
|
||
"dashboard.perf.cpu": "CPU",
|
||
"dashboard.perf.ram": "内存",
|
||
"dashboard.perf.gpu": "GPU",
|
||
"dashboard.perf.unavailable": "不可用",
|
||
"dashboard.perf.color": "图表颜色",
|
||
"dashboard.poll_interval": "刷新间隔",
|
||
"automations.title": "自动化",
|
||
"automations.empty": "尚未配置自动化。创建一个以自动激活场景。",
|
||
"automations.add": "添加自动化",
|
||
"automations.edit": "编辑自动化",
|
||
"automations.delete.confirm": "删除自动化 \"{name}\"?",
|
||
"automations.name": "名称:",
|
||
"automations.name.hint": "此自动化的描述性名称",
|
||
"automations.name.placeholder": "我的自动化",
|
||
"automations.enabled": "启用:",
|
||
"automations.enabled.hint": "禁用的自动化即使满足条件也不会激活",
|
||
"automations.condition_logic": "条件逻辑:",
|
||
"automations.condition_logic.hint": "多个条件的组合方式:任一(或)或 全部(与)",
|
||
"automations.condition_logic.or": "任一条件(或)",
|
||
"automations.condition_logic.and": "全部条件(与)",
|
||
"automations.condition_logic.or.desc": "任一条件匹配时触发",
|
||
"automations.condition_logic.and.desc": "全部匹配时才触发",
|
||
"automations.conditions": "条件:",
|
||
"automations.conditions.hint": "决定此自动化何时激活的规则",
|
||
"automations.conditions.add": "添加条件",
|
||
"automations.conditions.empty": "无条件 — 启用后自动化始终处于活动状态",
|
||
"automations.condition.always": "始终",
|
||
"automations.condition.always.desc": "始终活跃",
|
||
"automations.condition.always.hint": "自动化启用后立即激活并保持活动。",
|
||
"automations.condition.startup": "启动",
|
||
"automations.condition.startup.desc": "服务器启动时",
|
||
"automations.condition.startup.hint": "服务器启动时激活,启用期间保持活动。",
|
||
"automations.condition.application": "应用程序",
|
||
"automations.condition.application.desc": "应用运行/聚焦",
|
||
"automations.condition.application.apps": "应用程序:",
|
||
"automations.condition.application.apps.hint": "进程名,每行一个(例如 firefox.exe)",
|
||
"automations.condition.application.browse": "浏览",
|
||
"automations.condition.application.search": "筛选进程...",
|
||
"automations.condition.application.no_processes": "未找到进程",
|
||
"automations.condition.application.match_type": "匹配类型:",
|
||
"automations.condition.application.match_type.hint": "如何检测应用程序",
|
||
"automations.condition.application.match_type.running": "运行中",
|
||
"automations.condition.application.match_type.running.desc": "进程活跃",
|
||
"automations.condition.application.match_type.topmost": "最前",
|
||
"automations.condition.application.match_type.topmost.desc": "前台窗口",
|
||
"automations.condition.application.match_type.topmost_fullscreen": "最前 + 全屏",
|
||
"automations.condition.application.match_type.topmost_fullscreen.desc": "前台 + 全屏",
|
||
"automations.condition.application.match_type.fullscreen": "全屏",
|
||
"automations.condition.application.match_type.fullscreen.desc": "任意全屏应用",
|
||
"automations.condition.time_of_day": "时段",
|
||
"automations.condition.time_of_day.desc": "时间范围",
|
||
"automations.condition.time_of_day.start_time": "开始时间:",
|
||
"automations.condition.time_of_day.end_time": "结束时间:",
|
||
"automations.condition.time_of_day.overnight_hint": "跨夜时段(如 22:00–06:00),请将开始时间设为晚于结束时间。",
|
||
"automations.condition.system_idle": "系统空闲",
|
||
"automations.condition.system_idle.desc": "空闲/活跃",
|
||
"automations.condition.system_idle.idle_minutes": "空闲超时(分钟):",
|
||
"automations.condition.system_idle.mode": "触发模式:",
|
||
"automations.condition.system_idle.when_idle": "空闲时",
|
||
"automations.condition.system_idle.when_active": "活跃时",
|
||
"automations.condition.display_state": "显示器状态",
|
||
"automations.condition.display_state.desc": "显示器开/关",
|
||
"automations.condition.display_state.state": "显示器状态:",
|
||
"automations.condition.display_state.on": "开启",
|
||
"automations.condition.display_state.off": "关闭(休眠)",
|
||
"automations.condition.mqtt": "MQTT",
|
||
"automations.condition.mqtt.desc": "MQTT 消息",
|
||
"automations.condition.mqtt.topic": "主题:",
|
||
"automations.condition.mqtt.payload": "消息内容:",
|
||
"automations.condition.mqtt.match_mode": "匹配模式:",
|
||
"automations.condition.mqtt.match_mode.exact": "精确匹配",
|
||
"automations.condition.mqtt.match_mode.contains": "包含",
|
||
"automations.condition.mqtt.match_mode.regex": "正则表达式",
|
||
"automations.condition.mqtt.hint": "当 MQTT 主题收到匹配的消息时激活",
|
||
"automations.condition.webhook": "Webhook",
|
||
"automations.condition.webhook.desc": "HTTP 回调",
|
||
"automations.condition.webhook.hint": "通过外部服务的 HTTP 请求激活(Home Assistant、IFTTT、curl 等)",
|
||
"automations.condition.webhook.url": "Webhook URL:",
|
||
"automations.condition.webhook.copy": "复制",
|
||
"automations.condition.webhook.copied": "已复制!",
|
||
"automations.condition.webhook.save_first": "请先保存自动化以生成 Webhook URL",
|
||
"automations.scene": "场景:",
|
||
"automations.scene.hint": "条件满足时激活的场景预设",
|
||
"automations.scene.search_placeholder": "搜索场景...",
|
||
"automations.scene.none_selected": "无(无场景)",
|
||
"automations.scene.none_available": "没有可用的场景",
|
||
"automations.deactivation_mode": "停用方式:",
|
||
"automations.deactivation_mode.hint": "条件不再满足时的行为",
|
||
"automations.deactivation_mode.none": "无",
|
||
"automations.deactivation_mode.none.desc": "保持当前状态",
|
||
"automations.deactivation_mode.revert": "恢复",
|
||
"automations.deactivation_mode.revert.desc": "恢复到之前的状态",
|
||
"automations.deactivation_mode.fallback_scene": "备用",
|
||
"automations.deactivation_mode.fallback_scene.desc": "激活备用场景",
|
||
"automations.deactivation_scene": "备用场景:",
|
||
"automations.deactivation_scene.hint": "自动化停用时激活的场景",
|
||
"automations.status.active": "活动",
|
||
"automations.status.inactive": "非活动",
|
||
"automations.status.disabled": "已禁用",
|
||
"automations.action.disable": "禁用",
|
||
"automations.last_activated": "上次激活",
|
||
"automations.logic.and": " 与 ",
|
||
"automations.logic.or": " 或 ",
|
||
"automations.logic.all": "全部",
|
||
"automations.logic.any": "任一",
|
||
"automations.updated": "自动化已更新",
|
||
"automations.created": "自动化已创建",
|
||
"automations.deleted": "自动化已删除",
|
||
"automations.error.name_required": "名称为必填项",
|
||
"automations.error.clone_failed": "克隆自动化失败",
|
||
"scenes.title": "场景",
|
||
"scenes.add": "捕获场景",
|
||
"scenes.edit": "编辑场景",
|
||
"scenes.name": "名称:",
|
||
"scenes.name.hint": "此场景预设的描述性名称",
|
||
"scenes.name.placeholder": "我的场景",
|
||
"scenes.description": "描述:",
|
||
"scenes.description.hint": "此场景功能的可选描述",
|
||
"scenes.targets": "目标:",
|
||
"scenes.targets.hint": "选择要包含在此场景快照中的目标",
|
||
"scenes.targets.add": "添加目标",
|
||
"scenes.targets.search_placeholder": "搜索目标...",
|
||
"scenes.capture": "捕获",
|
||
"scenes.activate": "激活场景",
|
||
"scenes.recapture": "重新捕获当前状态",
|
||
"scenes.delete": "删除场景",
|
||
"scenes.targets_count": "目标",
|
||
"scenes.captured": "场景已捕获",
|
||
"scenes.updated": "场景已更新",
|
||
"scenes.activated": "场景已激活",
|
||
"scenes.activated_partial": "场景部分激活",
|
||
"scenes.errors": "错误",
|
||
"scenes.recaptured": "场景已重新捕获",
|
||
"scenes.deleted": "场景已删除",
|
||
"scenes.recapture_confirm": "将当前状态重新捕获到\"{name}\"中?",
|
||
"scenes.delete_confirm": "删除场景\"{name}\"?",
|
||
"scenes.error.name_required": "名称为必填项",
|
||
"scenes.error.save_failed": "保存场景失败",
|
||
"scenes.error.activate_failed": "激活场景失败",
|
||
"scenes.error.recapture_failed": "重新捕获场景失败",
|
||
"scenes.error.delete_failed": "删除场景失败",
|
||
"scenes.cloned": "场景已克隆",
|
||
"scenes.error.clone_failed": "克隆场景失败",
|
||
"time.hours_minutes": "{h}时 {m}分",
|
||
"time.minutes_seconds": "{m}分 {s}秒",
|
||
"time.seconds": "{s}秒",
|
||
"dashboard.type.led": "LED",
|
||
"dashboard.type.kc": "关键颜色",
|
||
"aria.close": "关闭",
|
||
"aria.save": "保存",
|
||
"aria.cancel": "取消",
|
||
"aria.previous": "上一个",
|
||
"aria.next": "下一个",
|
||
"aria.hint": "显示提示",
|
||
"color_strip.select_type": "选择色带类型",
|
||
"color_strip.add": "添加色带源",
|
||
"color_strip.edit": "编辑色带源",
|
||
"color_strip.name": "名称:",
|
||
"color_strip.name.placeholder": "墙壁灯带",
|
||
"color_strip.picture_source": "图片源:",
|
||
"color_strip.picture_source.hint": "用作 LED 颜色计算输入的屏幕采集源",
|
||
"color_strip.fps": "目标 FPS:",
|
||
"color_strip.fps.hint": "LED 颜色更新的目标帧率(10-90)",
|
||
"color_strip.interpolation": "颜色模式:",
|
||
"color_strip.interpolation.hint": "如何从采样的边框像素计算 LED 颜色",
|
||
"color_strip.interpolation.average": "平均",
|
||
"color_strip.interpolation.median": "中位数",
|
||
"color_strip.interpolation.dominant": "主色",
|
||
"color_strip.interpolation.average.desc": "将所有采样像素混合为平滑颜色",
|
||
"color_strip.interpolation.median.desc": "取中间颜色值,减少异常值",
|
||
"color_strip.interpolation.dominant.desc": "使用样本中出现最频繁的颜色",
|
||
"color_strip.smoothing": "平滑:",
|
||
"color_strip.smoothing.hint": "帧间时间混合(0=无,1=完全)。减少闪烁。",
|
||
"color_strip.frame_interpolation": "帧插值:",
|
||
"color_strip.frame_interpolation.hint": "在连续采集帧之间混合,以在采集速率较低时仍以完整目标 FPS 输出。减少慢速环境过渡时的可见阶梯效应。",
|
||
"color_strip.color_corrections": "色彩校正",
|
||
"color_strip.brightness": "亮度:",
|
||
"color_strip.brightness.hint": "输出亮度倍数(0=关闭,1=不变,2=加倍)。在颜色提取后应用。",
|
||
"color_strip.saturation": "饱和度:",
|
||
"color_strip.saturation.hint": "颜色饱和度(0=灰度,1=不变,2=双倍饱和度)",
|
||
"color_strip.gamma": "伽马:",
|
||
"color_strip.gamma.hint": "伽马校正(1=无,<1=更亮的中间调,>1=更暗的中间调)",
|
||
"color_strip.test_device": "测试设备:",
|
||
"color_strip.test_device.hint": "选择一个设备,在点击边缘切换时发送测试像素",
|
||
"color_strip.leds": "LED 数量",
|
||
"color_strip.led_count": "LED 数量:",
|
||
"color_strip.led_count.hint": "物理灯带上的 LED 总数。屏幕源:0 = 从校准自动获取(未映射到边缘的额外 LED 将为黑色)。静态颜色:设置为与设备 LED 数量匹配。",
|
||
"color_strip.created": "色带源已创建",
|
||
"color_strip.updated": "色带源已更新",
|
||
"color_strip.deleted": "色带源已删除",
|
||
"color_strip.delete.confirm": "确定要删除此色带源吗?",
|
||
"color_strip.delete.referenced": "无法删除:此源正在被目标使用",
|
||
"color_strip.error.name_required": "请输入名称",
|
||
"color_strip.type": "类型:",
|
||
"color_strip.type.hint": "图片源从屏幕采集推导 LED 颜色。静态颜色用单一颜色填充所有 LED。渐变在所有 LED 上分布颜色渐变。颜色循环平滑循环用户定义的颜色列表。组合将多个源作为混合图层叠加。音频响应从实时音频输入驱动 LED。API 输入通过 REST 或 WebSocket 从外部客户端接收原始 LED 颜色。",
|
||
"color_strip.type.picture": "图片源",
|
||
"color_strip.type.picture.desc": "从屏幕捕获获取颜色",
|
||
"color_strip.type.picture_advanced": "多显示器",
|
||
"color_strip.type.picture_advanced.desc": "跨显示器的线条校准",
|
||
"color_strip.type.static": "静态颜色",
|
||
"color_strip.type.static.desc": "单色填充",
|
||
"color_strip.type.gradient": "渐变",
|
||
"color_strip.type.gradient.desc": "LED上的平滑颜色过渡",
|
||
"color_strip.type.color_cycle": "颜色循环",
|
||
"color_strip.type.color_cycle.desc": "循环切换颜色列表",
|
||
"color_strip.static_color": "颜色:",
|
||
"color_strip.static_color.hint": "将发送到灯带上所有 LED 的纯色。",
|
||
"color_strip.gradient.preview": "渐变:",
|
||
"color_strip.gradient.preview.hint": "可视预览。点击下方标记轨道添加色标。拖动标记重新定位。",
|
||
"color_strip.gradient.stops": "色标:",
|
||
"color_strip.gradient.stops.hint": "每个色标在相对位置定义一种颜色(0.0 = 起始,1.0 = 结束)。↔ 按钮添加右侧颜色以在该色标处创建硬边。",
|
||
"color_strip.gradient.stops_count": "个色标",
|
||
"color_strip.gradient.add_stop": "+ 添加色标",
|
||
"color_strip.gradient.position": "位置(0.0-1.0)",
|
||
"color_strip.gradient.bidir.hint": "在此色标右侧添加第二种颜色以在渐变中创建硬边。",
|
||
"color_strip.gradient.min_stops": "渐变至少需要 2 个色标",
|
||
"color_strip.gradient.preset": "预设:",
|
||
"color_strip.gradient.preset.hint": "加载预定义的渐变调色板。选择预设将替换当前色标。",
|
||
"color_strip.gradient.preset.custom": "— 自定义 —",
|
||
"color_strip.gradient.preset.rainbow": "彩虹",
|
||
"color_strip.gradient.preset.sunset": "日落",
|
||
"color_strip.gradient.preset.ocean": "海洋",
|
||
"color_strip.gradient.preset.forest": "森林",
|
||
"color_strip.gradient.preset.fire": "火焰",
|
||
"color_strip.gradient.preset.lava": "熔岩",
|
||
"color_strip.gradient.preset.aurora": "极光",
|
||
"color_strip.gradient.preset.ice": "冰",
|
||
"color_strip.gradient.preset.warm": "暖色",
|
||
"color_strip.gradient.preset.cool": "冷色",
|
||
"color_strip.gradient.preset.neon": "霓虹",
|
||
"color_strip.gradient.preset.pastel": "柔和",
|
||
"color_strip.gradient.preset.save_button": "保存为预设…",
|
||
"color_strip.gradient.preset.save_prompt": "输入预设名称:",
|
||
"color_strip.gradient.preset.saved": "预设已保存",
|
||
"color_strip.gradient.preset.deleted": "预设已删除",
|
||
"color_strip.gradient.preset.apply": "应用",
|
||
"color_strip.animation": "动画",
|
||
"color_strip.animation.type": "效果:",
|
||
"color_strip.animation.type.hint": "要应用的动画效果。",
|
||
"color_strip.animation.type.none": "无(无动画效果)",
|
||
"color_strip.animation.type.none.desc": "静态颜色,无动画",
|
||
"color_strip.animation.type.breathing": "呼吸",
|
||
"color_strip.animation.type.breathing.desc": "平滑的亮度渐入渐出",
|
||
"color_strip.animation.type.color_cycle": "颜色循环",
|
||
"color_strip.animation.type.gradient_shift": "渐变移动",
|
||
"color_strip.animation.type.gradient_shift.desc": "渐变沿灯带滑动",
|
||
"color_strip.animation.type.wave": "波浪",
|
||
"color_strip.animation.type.wave.desc": "沿灯带移动的正弦亮度波",
|
||
"color_strip.animation.type.strobe": "频闪",
|
||
"color_strip.animation.type.strobe.desc": "快速开/关闪烁",
|
||
"color_strip.animation.type.sparkle": "闪烁",
|
||
"color_strip.animation.type.sparkle.desc": "随机 LED 短暂闪亮",
|
||
"color_strip.animation.type.pulse": "脉冲",
|
||
"color_strip.animation.type.pulse.desc": "快速衰减的尖锐亮度脉冲",
|
||
"color_strip.animation.type.candle": "烛光",
|
||
"color_strip.animation.type.candle.desc": "温暖的类似蜡烛的闪烁光芒",
|
||
"color_strip.animation.type.rainbow_fade": "彩虹渐变",
|
||
"color_strip.animation.type.rainbow_fade.desc": "循环整个色相光谱",
|
||
"color_strip.animation.speed": "速度:",
|
||
"color_strip.animation.speed.hint": "动画速度倍数。1.0 ≈ 呼吸效果每秒一个循环;更高值循环更快。",
|
||
"color_strip.color_cycle.colors": "颜色:",
|
||
"color_strip.color_cycle.colors.hint": "平滑循环的颜色列表。至少需要 2 种。默认为全彩虹光谱。",
|
||
"color_strip.color_cycle.add_color": "+ 添加颜色",
|
||
"color_strip.color_cycle.speed": "速度:",
|
||
"color_strip.color_cycle.speed.hint": "循环速度倍数。1.0 ≈ 每 20 秒一个完整循环;更高值循环更快。",
|
||
"color_strip.color_cycle.min_colors": "颜色循环至少需要 2 种颜色",
|
||
"color_strip.type.effect": "效果",
|
||
"color_strip.type.effect.desc": "程序化效果:火焰、等离子、极光",
|
||
"color_strip.type.effect.hint": "实时生成的程序化 LED 效果(火焰、流星、等离子、噪声、极光)。",
|
||
"color_strip.type.composite": "组合",
|
||
"color_strip.type.composite.desc": "叠加和混合多个源",
|
||
"color_strip.type.composite.hint": "将多个色带源作为图层叠加,支持混合模式和不透明度。",
|
||
"color_strip.type.mapped": "映射",
|
||
"color_strip.type.mapped.desc": "为LED区域分配源",
|
||
"color_strip.type.mapped.hint": "将不同色带源分配到不同 LED 范围(区域)。与组合的图层混合不同,映射将源并排放置。",
|
||
"color_strip.type.audio": "音频响应",
|
||
"color_strip.type.audio.desc": "由音频输入驱动LED",
|
||
"color_strip.type.audio.hint": "LED 颜色由实时音频输入驱动 — 系统音频或麦克风。",
|
||
"color_strip.type.api_input": "API 输入",
|
||
"color_strip.type.api_input.desc": "从外部应用接收颜色",
|
||
"color_strip.type.api_input.hint": "通过 REST POST 或 WebSocket 从外部客户端接收原始 LED 颜色数组。用于与自定义软件、家庭自动化或任何能发送 HTTP 请求的系统集成。",
|
||
"color_strip.api_input.fallback_color": "备用颜色:",
|
||
"color_strip.api_input.fallback_color.hint": "超时未收到数据时显示的颜色。启动时和连接丢失后 LED 将显示此颜色。",
|
||
"color_strip.api_input.timeout": "超时(秒):",
|
||
"color_strip.api_input.timeout.hint": "等待新颜色数据多长时间后恢复为备用颜色。设为 0 表示永不超时。",
|
||
"color_strip.api_input.endpoints": "推送端点:",
|
||
"color_strip.api_input.endpoints.hint": "使用这些 URL 从外部应用程序推送 LED 颜色数据。REST 接受 JSON,WebSocket 接受 JSON 和原始二进制帧。",
|
||
"color_strip.api_input.save_first": "请先保存源以查看推送端点 URL。",
|
||
"color_strip.type.notification": "通知",
|
||
"color_strip.type.notification.desc": "通过Webhook触发的一次性效果",
|
||
"color_strip.type.notification.hint": "通过 Webhook 触发时显示一次性视觉效果(闪烁、脉冲、扫描)。设计为组合源中的叠加层。",
|
||
"color_strip.notification.effect": "效果:",
|
||
"color_strip.notification.effect.hint": "通知触发时的视觉效果。闪烁线性衰减,脉冲平滑钟形曲线,扫描从左到右填充后衰减。",
|
||
"color_strip.notification.effect.flash": "闪烁",
|
||
"color_strip.notification.effect.flash.desc": "瞬时点亮,线性衰减",
|
||
"color_strip.notification.effect.pulse": "脉冲",
|
||
"color_strip.notification.effect.pulse.desc": "平滑钟形发光",
|
||
"color_strip.notification.effect.sweep": "扫描",
|
||
"color_strip.notification.effect.sweep.desc": "从左到右填充然后消失",
|
||
"color_strip.notification.duration": "持续时间(毫秒):",
|
||
"color_strip.notification.duration.hint": "通知效果播放的时长(毫秒)。",
|
||
"color_strip.notification.default_color": "默认颜色:",
|
||
"color_strip.notification.default_color.hint": "当通知没有应用特定颜色映射时使用的颜色。",
|
||
"color_strip.notification.filter_mode": "应用过滤:",
|
||
"color_strip.notification.filter_mode.hint": "按应用名称过滤通知。关闭=接受全部,白名单=仅列出的应用,黑名单=排除列出的应用。",
|
||
"color_strip.notification.filter_mode.off": "关闭",
|
||
"color_strip.notification.filter_mode.whitelist": "白名单",
|
||
"color_strip.notification.filter_mode.blacklist": "黑名单",
|
||
"color_strip.notification.filter_mode.off.desc": "接受所有通知",
|
||
"color_strip.notification.filter_mode.whitelist.desc": "仅列出的应用",
|
||
"color_strip.notification.filter_mode.blacklist.desc": "排除列出的应用",
|
||
"color_strip.notification.filter_list": "应用列表:",
|
||
"color_strip.notification.filter_list.hint": "每行一个应用名称。使用「浏览」从运行中的进程中选择。",
|
||
"color_strip.notification.filter_list.placeholder": "Discord\nSlack\nTelegram",
|
||
"color_strip.notification.app_colors": "应用颜色",
|
||
"color_strip.notification.app_colors.label": "颜色映射:",
|
||
"color_strip.notification.app_colors.hint": "每个应用的自定义通知颜色。每行将一个应用名称映射到特定颜色。",
|
||
"color_strip.notification.app_colors.add": "+ 添加映射",
|
||
"color_strip.notification.endpoint": "Webhook 端点:",
|
||
"color_strip.notification.endpoint.hint": "使用此 URL 从外部系统触发通知。POST 请求可选 JSON:{\"app\": \"AppName\", \"color\": \"#FF0000\"}。",
|
||
"color_strip.notification.save_first": "请先保存源以查看 Webhook 端点 URL。",
|
||
"color_strip.notification.app_count": "个应用",
|
||
"color_strip.notification.test": "测试通知",
|
||
"color_strip.notification.test.ok": "通知已发送",
|
||
"color_strip.notification.test.no_streams": "此源没有运行中的流",
|
||
"color_strip.notification.test.error": "发送通知失败",
|
||
"color_strip.notification.history.title": "通知历史",
|
||
"color_strip.notification.history.hint": "监听器捕获的最近OS通知(最新在前),最多50条。",
|
||
"color_strip.notification.history.empty": "尚未捕获任何通知",
|
||
"color_strip.notification.history.unavailable": "此平台不支持OS通知监听器",
|
||
"color_strip.notification.history.error": "加载通知历史失败",
|
||
"color_strip.notification.history.refresh": "刷新",
|
||
"color_strip.notification.history.unknown_app": "未知应用",
|
||
"color_strip.notification.history.fired": "触发的流数量",
|
||
"color_strip.notification.history.filtered": "过滤的流数量",
|
||
"color_strip.test.title": "预览测试",
|
||
"color_strip.test.connecting": "连接中...",
|
||
"color_strip.test.error": "无法连接到预览流",
|
||
"color_strip.test.led_count": "LED数量:",
|
||
"color_strip.test.fps": "FPS:",
|
||
"color_strip.test.apply": "应用",
|
||
"color_strip.test.composite": "合成",
|
||
"color_strip.preview.title": "实时预览",
|
||
"color_strip.preview.not_connected": "未连接",
|
||
"color_strip.preview.connecting": "连接中...",
|
||
"color_strip.preview.connected": "已连接",
|
||
"color_strip.preview.unsupported": "此源类型不支持预览",
|
||
"color_strip.type.daylight": "日光循环",
|
||
"color_strip.type.daylight.desc": "模拟24小时自然日光变化",
|
||
"color_strip.type.daylight.hint": "模拟太阳在24小时内的色温变化——从温暖的日出到冷白的日光,再到温暖的日落和昏暗的夜晚。",
|
||
"color_strip.daylight.speed": "速度:",
|
||
"color_strip.daylight.speed.hint": "循环速度倍数。1.0 = 约4分钟完成一个完整的昼夜循环。",
|
||
"color_strip.daylight.use_real_time": "使用实时时间:",
|
||
"color_strip.daylight.use_real_time.hint": "启用后,LED颜色匹配计算机的实际时间。速度设置将被忽略。",
|
||
"color_strip.daylight.real_time": "实时",
|
||
"color_strip.daylight.latitude": "纬度:",
|
||
"color_strip.daylight.latitude.hint": "地理纬度(-90到90)。影响实时模式下的日出/日落时间。",
|
||
"color_strip.type.candlelight": "烛光",
|
||
"color_strip.type.candlelight.desc": "逼真的烛光闪烁模拟",
|
||
"color_strip.type.candlelight.hint": "在所有LED上模拟逼真的蜡烛闪烁,具有温暖色调和有机闪烁模式。",
|
||
"color_strip.candlelight.color": "基础颜色:",
|
||
"color_strip.candlelight.color.hint": "蜡烛火焰的温暖基础颜色。默认为自然温暖的琥珀色。",
|
||
"color_strip.candlelight.intensity": "闪烁强度:",
|
||
"color_strip.candlelight.intensity.hint": "蜡烛闪烁程度。低值产生柔和光芒,高值模拟风中的蜡烛。",
|
||
"color_strip.candlelight.num_candles_label": "蜡烛数量:",
|
||
"color_strip.candlelight.num_candles": "支蜡烛",
|
||
"color_strip.candlelight.num_candles.hint": "灯带上独立蜡烛光源的数量。每支蜡烛有自己的闪烁模式。",
|
||
"color_strip.candlelight.speed": "闪烁速度:",
|
||
"color_strip.candlelight.speed.hint": "闪烁动画的速度。较高的值产生更快、更不安定的火焰。",
|
||
"color_strip.type.processed": "已处理",
|
||
"color_strip.type.processed.desc": "将处理模板应用于另一个源",
|
||
"color_strip.type.processed.hint": "包装现有色带源并通过滤镜链处理其输出。",
|
||
"color_strip.processed.input": "输入源:",
|
||
"color_strip.processed.input.hint": "将被处理的色带源",
|
||
"color_strip.processed.template": "处理模板:",
|
||
"color_strip.processed.template.hint": "应用于输入源输出的滤镜链",
|
||
"color_strip.processed.error.no_input": "请选择输入源",
|
||
"color_strip.composite.layers": "图层:",
|
||
"color_strip.composite.layers.hint": "叠加多个色带源。第一个图层在底部,最后一个在顶部。每个图层可以有自己的混合模式和不透明度。",
|
||
"color_strip.composite.add_layer": "+ 添加图层",
|
||
"color_strip.composite.source": "源",
|
||
"color_strip.composite.blend_mode": "混合",
|
||
"color_strip.composite.blend_mode.normal": "正常",
|
||
"color_strip.composite.blend_mode.normal.desc": "标准 Alpha 混合",
|
||
"color_strip.composite.blend_mode.add": "叠加",
|
||
"color_strip.composite.blend_mode.add.desc": "通过叠加颜色提亮",
|
||
"color_strip.composite.blend_mode.multiply": "正片叠底",
|
||
"color_strip.composite.blend_mode.multiply.desc": "通过相乘颜色变暗",
|
||
"color_strip.composite.blend_mode.screen": "滤色",
|
||
"color_strip.composite.blend_mode.screen.desc": "提亮,正片叠底的反转",
|
||
"color_strip.composite.opacity": "不透明度",
|
||
"color_strip.composite.brightness": "亮度",
|
||
"color_strip.composite.brightness.none": "无(全亮度)",
|
||
"color_strip.composite.processing": "处理",
|
||
"color_strip.composite.enabled": "启用",
|
||
"color_strip.composite.error.min_layers": "至少需要 1 个图层",
|
||
"color_strip.composite.error.no_source": "每个图层必须选择一个源",
|
||
"color_strip.composite.layers_count": "个图层",
|
||
"color_strip.mapped.zones": "区域:",
|
||
"color_strip.mapped.zones.hint": "每个区域将色带源映射到特定 LED 范围。区域并排放置 — 区域之间的间隙保持黑色。",
|
||
"color_strip.mapped.add_zone": "+ 添加区域",
|
||
"color_strip.mapped.zone_source": "源",
|
||
"color_strip.mapped.zone_start": "起始 LED",
|
||
"color_strip.mapped.zone_end": "结束 LED",
|
||
"color_strip.mapped.zone_reverse": "反转",
|
||
"color_strip.mapped.zones_count": "个区域",
|
||
"color_strip.mapped.select_source": "搜索源...",
|
||
"color_strip.mapped.error.no_source": "每个区域必须选择一个源",
|
||
"color_strip.audio.visualization": "可视化:",
|
||
"color_strip.audio.visualization.hint": "音频数据如何渲染到 LED。",
|
||
"color_strip.audio.viz.spectrum": "频谱分析",
|
||
"color_strip.audio.viz.spectrum.desc": "频率条分布在灯带上",
|
||
"color_strip.audio.viz.beat_pulse": "节拍脉冲",
|
||
"color_strip.audio.viz.beat_pulse.desc": "所有LED随节拍脉动",
|
||
"color_strip.audio.viz.vu_meter": "VU 表",
|
||
"color_strip.audio.viz.vu_meter.desc": "音量填充灯带",
|
||
"color_strip.audio.source": "音频源:",
|
||
"color_strip.audio.source.hint": "此可视化的音频源。可以是多声道(设备)或单声道(单通道)源。在源标签页中创建和管理音频源。",
|
||
"color_strip.audio.sensitivity": "灵敏度:",
|
||
"color_strip.audio.sensitivity.hint": "音频电平的增益倍数。更高值使 LED 对较安静的声音也有反应。",
|
||
"color_strip.audio.smoothing": "平滑:",
|
||
"color_strip.audio.smoothing.hint": "帧间时间平滑。更高值产生更平滑但反应较慢的视觉效果。",
|
||
"color_strip.audio.palette": "调色板:",
|
||
"color_strip.audio.palette.hint": "用于频谱条或节拍脉冲着色的调色板。",
|
||
"color_strip.audio.color": "基础颜色:",
|
||
"color_strip.audio.color.hint": "VU 表条的低电平颜色。",
|
||
"color_strip.audio.color_peak": "峰值颜色:",
|
||
"color_strip.audio.color_peak.hint": "VU 表条顶部的高电平颜色。",
|
||
"color_strip.audio.mirror": "镜像:",
|
||
"color_strip.audio.mirror.hint": "从中心向外镜像频谱:低音在中间,高音在两端。",
|
||
"color_strip.effect.type": "效果类型:",
|
||
"color_strip.effect.type.hint": "选择程序化算法。",
|
||
"color_strip.effect.fire": "火焰",
|
||
"color_strip.effect.fire.desc": "模拟带热量扩散的上升火焰的元胞自动机",
|
||
"color_strip.effect.meteor": "流星",
|
||
"color_strip.effect.meteor.desc": "明亮头部沿灯带移动,带指数衰减的尾迹",
|
||
"color_strip.effect.plasma": "等离子",
|
||
"color_strip.effect.plasma.desc": "映射到调色板的重叠正弦波 — 经典演示场景效果",
|
||
"color_strip.effect.noise": "噪声",
|
||
"color_strip.effect.noise.desc": "滚动的分形值噪声映射到调色板",
|
||
"color_strip.effect.aurora": "极光",
|
||
"color_strip.effect.aurora.desc": "漂移和混合的分层噪声带 — 北极光风格",
|
||
"color_strip.effect.speed": "速度:",
|
||
"color_strip.effect.speed.hint": "效果动画的速度倍数(0.1 = 非常慢,10.0 = 非常快)。",
|
||
"color_strip.effect.palette": "调色板:",
|
||
"color_strip.effect.palette.hint": "用于将效果值映射到 RGB 颜色的调色板。",
|
||
"color_strip.effect.color": "流星颜色:",
|
||
"color_strip.effect.color.hint": "流星效果的头部颜色。",
|
||
"color_strip.effect.intensity": "强度:",
|
||
"color_strip.effect.intensity.hint": "效果强度 — 控制火花率(火焰)、尾迹衰减(流星)或亮度范围(极光)。",
|
||
"color_strip.effect.scale": "比例:",
|
||
"color_strip.effect.scale.hint": "空间比例 — 波频率(等离子)、缩放级别(噪声)或带宽(极光)。",
|
||
"color_strip.effect.mirror": "镜像:",
|
||
"color_strip.effect.mirror.hint": "反弹模式 — 流星在灯带末端反转方向而不是循环。",
|
||
"color_strip.palette.fire": "火焰",
|
||
"color_strip.palette.ocean": "海洋",
|
||
"color_strip.palette.lava": "熔岩",
|
||
"color_strip.palette.forest": "森林",
|
||
"color_strip.palette.rainbow": "彩虹",
|
||
"color_strip.palette.aurora": "极光",
|
||
"color_strip.palette.sunset": "日落",
|
||
"color_strip.palette.ice": "冰",
|
||
"audio_source.title": "音频源",
|
||
"audio_source.group.multichannel": "多声道",
|
||
"audio_source.group.mono": "单声道",
|
||
"audio_source.add": "添加音频源",
|
||
"audio_source.add.multichannel": "添加多声道源",
|
||
"audio_source.add.mono": "添加单声道源",
|
||
"audio_source.edit": "编辑音频源",
|
||
"audio_source.edit.multichannel": "编辑多声道源",
|
||
"audio_source.edit.mono": "编辑单声道源",
|
||
"audio_source.name": "名称:",
|
||
"audio_source.name.placeholder": "系统音频",
|
||
"audio_source.name.hint": "此音频源的描述性名称",
|
||
"audio_source.type": "类型:",
|
||
"audio_source.type.hint": "多声道从物理音频设备采集所有通道。单声道从多声道源提取单个通道。",
|
||
"audio_source.type.multichannel": "多声道",
|
||
"audio_source.type.mono": "单声道",
|
||
"audio_source.device": "音频设备:",
|
||
"audio_source.device.hint": "音频输入源。回环设备采集系统音频输出;输入设备采集麦克风或线路输入。",
|
||
"audio_source.refresh_devices": "刷新设备",
|
||
"audio_source.parent": "父源:",
|
||
"audio_source.parent.hint": "要从中提取通道的多声道源",
|
||
"audio_source.channel": "通道:",
|
||
"audio_source.channel.hint": "从多声道源提取哪个音频通道",
|
||
"audio_source.channel.mono": "单声道(左+右混合)",
|
||
"audio_source.channel.left": "左",
|
||
"audio_source.channel.right": "右",
|
||
"audio_source.description": "描述(可选):",
|
||
"audio_source.description.placeholder": "描述此音频源...",
|
||
"audio_source.description.hint": "关于此音频源的可选说明",
|
||
"audio_source.created": "音频源已创建",
|
||
"audio_source.updated": "音频源已更新",
|
||
"audio_source.deleted": "音频源已删除",
|
||
"audio_source.delete.confirm": "确定要删除此音频源吗?",
|
||
"audio_source.error.name_required": "请输入名称",
|
||
"audio_source.audio_template": "音频模板:",
|
||
"audio_source.audio_template.hint": "定义此设备使用哪个引擎和设置的音频采集模板",
|
||
"audio_source.test": "测试",
|
||
"audio_source.test.title": "测试音频源",
|
||
"audio_source.test.rms": "RMS",
|
||
"audio_source.test.peak": "峰值",
|
||
"audio_source.test.beat": "节拍",
|
||
"audio_source.test.connecting": "连接中...",
|
||
"audio_source.test.error": "音频测试失败",
|
||
"audio_template.test": "测试",
|
||
"audio_template.test.title": "测试音频模板",
|
||
"audio_template.test.device": "音频设备:",
|
||
"audio_template.test.device.hint": "选择测试期间要采集的音频设备",
|
||
"audio_template.test.run": "运行",
|
||
"audio_template.title": "音频模板",
|
||
"audio_template.add": "添加音频模板",
|
||
"audio_template.edit": "编辑音频模板",
|
||
"audio_template.name": "模板名称:",
|
||
"audio_template.name.placeholder": "我的音频模板",
|
||
"audio_template.description.label": "描述(可选):",
|
||
"audio_template.description.placeholder": "描述此模板...",
|
||
"audio_template.engine": "音频引擎:",
|
||
"audio_template.engine.hint": "选择要使用的音频采集后端。WASAPI 仅限 Windows 并支持回环。Sounddevice 支持跨平台。",
|
||
"audio_template.engine.unavailable": "不可用",
|
||
"audio_template.engine.unavailable.hint": "此引擎在您的系统上不可用",
|
||
"audio_template.config": "配置",
|
||
"audio_template.config.show": "显示配置",
|
||
"audio_template.created": "音频模板已创建",
|
||
"audio_template.updated": "音频模板已更新",
|
||
"audio_template.deleted": "音频模板已删除",
|
||
"audio_template.delete.confirm": "确定要删除此音频模板吗?",
|
||
"audio_template.error.load": "加载音频模板失败",
|
||
"audio_template.error.engines": "加载音频引擎失败",
|
||
"audio_template.error.required": "请填写所有必填项",
|
||
"audio_template.error.delete": "删除音频模板失败",
|
||
"streams.group.value": "值源",
|
||
"streams.group.sync": "同步时钟",
|
||
"tree.group.capture": "屏幕采集",
|
||
"tree.group.processing": "已处理",
|
||
"tree.group.picture": "图片",
|
||
"tree.group.strip": "色带",
|
||
"tree.group.utility": "工具",
|
||
"value_source.group.title": "值源",
|
||
"value_source.select_type": "选择值源类型",
|
||
"value_source.add": "添加值源",
|
||
"value_source.edit": "编辑值源",
|
||
"value_source.name": "名称:",
|
||
"value_source.name.placeholder": "亮度脉冲",
|
||
"value_source.name.hint": "此值源的描述性名称",
|
||
"value_source.type": "类型:",
|
||
"value_source.type.hint": "静态输出固定值。动画循环波形。音频响应声音输入。自适应类型根据时间或场景内容自动调节亮度。",
|
||
"value_source.type.static": "静态",
|
||
"value_source.type.static.desc": "固定输出值",
|
||
"value_source.type.animated": "动画",
|
||
"value_source.type.animated.desc": "循环波形变化",
|
||
"value_source.type.audio": "音频",
|
||
"value_source.type.audio.desc": "响应声音输入",
|
||
"value_source.type.adaptive_time": "自适应(时间)",
|
||
"value_source.type.adaptive_time.desc": "按时间自动调节",
|
||
"value_source.type.adaptive_scene": "自适应(场景)",
|
||
"value_source.type.adaptive_scene.desc": "按场景内容调节",
|
||
"value_source.type.daylight": "日光周期",
|
||
"value_source.type.daylight.desc": "亮度跟随日夜周期",
|
||
"value_source.daylight.speed": "速度:",
|
||
"value_source.daylight.speed.hint": "周期速度倍率。1.0 = 完整日夜周期约4分钟。",
|
||
"value_source.daylight.use_real_time": "使用实时:",
|
||
"value_source.daylight.use_real_time.hint": "启用后,亮度跟随实际时间。速度设置将被忽略。",
|
||
"value_source.daylight.enable_real_time": "跟随系统时钟",
|
||
"value_source.daylight.latitude": "纬度:",
|
||
"value_source.daylight.latitude.hint": "地理纬度(-90到90)。影响实时模式下的日出/日落时间。",
|
||
"value_source.daylight.real_time": "实时",
|
||
"value_source.daylight.speed_label": "速度",
|
||
"value_source.value": "值:",
|
||
"value_source.value.hint": "固定输出值(0.0 = 关闭,1.0 = 最大亮度)",
|
||
"value_source.waveform": "波形:",
|
||
"value_source.waveform.hint": "亮度动画循环的形状",
|
||
"value_source.waveform.sine": "正弦",
|
||
"value_source.waveform.triangle": "三角",
|
||
"value_source.waveform.square": "方波",
|
||
"value_source.waveform.sawtooth": "锯齿",
|
||
"value_source.speed": "速度(周期/分):",
|
||
"value_source.speed.hint": "每分钟周期数 — 波形重复的速度(1 = 非常慢,120 = 非常快)",
|
||
"value_source.min_value": "最小值:",
|
||
"value_source.min_value.hint": "波形周期的最小输出",
|
||
"value_source.max_value": "最大值:",
|
||
"value_source.max_value.hint": "波形周期的最大输出",
|
||
"value_source.audio_source": "音频源:",
|
||
"value_source.audio_source.hint": "要读取音频电平的音频源(多声道或单声道)",
|
||
"value_source.mode": "模式:",
|
||
"value_source.mode.hint": "RMS 测量平均音量。峰值跟踪最响的时刻。节拍在节奏上触发。",
|
||
"value_source.mode.rms": "RMS(音量)",
|
||
"value_source.mode.peak": "峰值",
|
||
"value_source.mode.beat": "节拍",
|
||
"value_source.mode.rms.desc": "平均音量水平",
|
||
"value_source.mode.peak.desc": "最响时刻追踪",
|
||
"value_source.mode.beat.desc": "节奏脉冲检测",
|
||
"value_source.auto_gain": "自动增益:",
|
||
"value_source.auto_gain.hint": "自动归一化音频电平,使输出使用完整范围,无论输入音量大小",
|
||
"value_source.auto_gain.enable": "启用自动增益",
|
||
"value_source.sensitivity": "灵敏度:",
|
||
"value_source.sensitivity.hint": "音频信号的增益倍数(越高反应越灵敏)",
|
||
"value_source.scene_sensitivity.hint": "亮度信号的增益倍数(越高对亮度变化越敏感)",
|
||
"value_source.smoothing": "平滑:",
|
||
"value_source.smoothing.hint": "时间平滑(0 = 即时响应,1 = 非常平滑/缓慢)",
|
||
"value_source.audio_min_value": "最小值:",
|
||
"value_source.audio_min_value.hint": "音频静默时的输出(例如 0.3 = 30% 亮度下限)",
|
||
"value_source.audio_max_value": "最大值:",
|
||
"value_source.audio_max_value.hint": "最大音频电平时的输出",
|
||
"value_source.schedule": "计划:",
|
||
"value_source.schedule.hint": "定义至少 2 个时间点。亮度在各点之间线性插值,午夜循环。",
|
||
"value_source.schedule.add": "+ 添加时间点",
|
||
"value_source.schedule.points": "个时间点",
|
||
"value_source.picture_source": "图片源:",
|
||
"value_source.picture_source.hint": "将分析其帧以获取平均亮度的图片源。",
|
||
"value_source.scene_behavior": "行为:",
|
||
"value_source.scene_behavior.hint": "互补:暗场景 = 高亮度(适合环境背光)。匹配:亮场景 = 高亮度。",
|
||
"value_source.scene_behavior.complement": "互补(暗 → 亮)",
|
||
"value_source.scene_behavior.match": "匹配(亮 → 亮)",
|
||
"value_source.adaptive_min_value": "最小值:",
|
||
"value_source.adaptive_min_value.hint": "最小输出亮度",
|
||
"value_source.adaptive_max_value": "最大值:",
|
||
"value_source.adaptive_max_value.hint": "最大输出亮度",
|
||
"value_source.error.schedule_min": "计划至少需要 2 个时间点",
|
||
"value_source.description": "描述(可选):",
|
||
"value_source.description.placeholder": "描述此值源...",
|
||
"value_source.description.hint": "关于此值源的可选说明",
|
||
"value_source.created": "值源已创建",
|
||
"value_source.updated": "值源已更新",
|
||
"value_source.deleted": "值源已删除",
|
||
"value_source.delete.confirm": "确定要删除此值源吗?",
|
||
"value_source.error.name_required": "请输入名称",
|
||
"value_source.test": "测试",
|
||
"value_source.test.title": "测试值源",
|
||
"value_source.test.connecting": "连接中...",
|
||
"value_source.test.error": "连接失败",
|
||
"value_source.test.current": "当前",
|
||
"value_source.test.min": "最小",
|
||
"value_source.test.max": "最大",
|
||
"test.frames": "帧数",
|
||
"test.fps": "帧率",
|
||
"test.avg_capture": "平均",
|
||
"targets.brightness_vs": "亮度源:",
|
||
"targets.brightness_vs.hint": "可选的值源,每帧动态控制亮度(覆盖设备亮度)",
|
||
"targets.brightness_vs.none": "无(设备亮度)",
|
||
"targets.min_brightness_threshold": "最低亮度阈值:",
|
||
"targets.min_brightness_threshold.hint": "当有效输出亮度(像素亮度 × 设备/源亮度)低于此值时,LED完全关闭(0 = 禁用)",
|
||
"targets.adaptive_fps": "自适应FPS:",
|
||
"targets.adaptive_fps.hint": "当设备无响应时自动降低发送速率,稳定后逐步恢复。推荐用于信号较弱的WiFi设备。",
|
||
"targets.protocol": "协议:",
|
||
"targets.protocol.hint": "DDP通过快速UDP发送像素(推荐)。HTTP使用JSON API——较慢但可靠,限制约500个LED。",
|
||
"targets.protocol.ddp": "DDP (UDP)",
|
||
"targets.protocol.ddp.desc": "快速UDP数据包 - 推荐",
|
||
"targets.protocol.http": "HTTP",
|
||
"targets.protocol.http.desc": "JSON API - 较慢,≤500 LED",
|
||
"targets.protocol.serial": "串口",
|
||
"search.open": "搜索 (Ctrl+K)",
|
||
"search.placeholder": "搜索实体... (Ctrl+K)",
|
||
"search.loading": "加载中...",
|
||
"search.no_results": "未找到结果",
|
||
"search.group.devices": "设备",
|
||
"search.group.targets": "LED 目标",
|
||
"search.group.kc_targets": "关键颜色目标",
|
||
"search.group.css": "色带源",
|
||
"search.group.automations": "自动化",
|
||
"search.group.streams": "图片流",
|
||
"search.group.capture_templates": "采集模板",
|
||
"search.group.pp_templates": "后处理模板",
|
||
"search.group.pattern_templates": "图案模板",
|
||
"search.group.audio": "音频源",
|
||
"search.group.value": "值源",
|
||
"search.group.scenes": "场景预设",
|
||
"search.group.cspt": "色带处理模板",
|
||
"search.group.sync_clocks": "同步时钟",
|
||
"search.group.actions": "操作",
|
||
"search.action.start": "启动",
|
||
"search.action.stop": "停止",
|
||
"search.action.activate": "激活",
|
||
"search.action.enable": "启用",
|
||
"search.action.disable": "禁用",
|
||
"settings.backup.label": "备份配置",
|
||
"settings.backup.hint": "将所有配置(设备、目标、流、模板、自动化)下载为单个 JSON 文件。",
|
||
"settings.backup.button": "下载备份",
|
||
"settings.backup.success": "备份下载成功",
|
||
"settings.backup.error": "备份下载失败",
|
||
"settings.restore.label": "恢复配置",
|
||
"settings.restore.hint": "上传之前下载的备份文件以替换所有配置。服务器将自动重启。",
|
||
"settings.restore.button": "从备份恢复",
|
||
"settings.restore.confirm": "这将替换所有配置并重启服务器。确定继续吗?",
|
||
"settings.restore.success": "配置已恢复",
|
||
"settings.restore.error": "恢复失败",
|
||
"settings.restore.restarting": "服务器正在重启...",
|
||
"settings.restore.restart_timeout": "服务器未响应。请手动刷新页面。",
|
||
"settings.restart_server": "重启服务器",
|
||
"settings.restart_confirm": "重启服务器?活跃的目标将被停止。",
|
||
"settings.restarting": "正在重启服务器...",
|
||
"settings.button.close": "关闭",
|
||
"settings.log_level.label": "日志级别",
|
||
"settings.log_level.hint": "实时更改服务器日志详细程度。DEBUG 显示最多细节;CRITICAL 仅显示致命错误。",
|
||
"settings.log_level.save": "应用",
|
||
"settings.log_level.saved": "日志级别已更改",
|
||
"settings.log_level.save_error": "更改日志级别失败",
|
||
"settings.auto_backup.label": "自动备份",
|
||
"settings.auto_backup.hint": "自动定期创建所有配置的备份。当达到最大数量时,旧备份会被自动清理。",
|
||
"settings.auto_backup.enable": "启用自动备份",
|
||
"settings.auto_backup.interval_label": "间隔",
|
||
"settings.auto_backup.max_label": "最大备份数",
|
||
"settings.auto_backup.save": "保存设置",
|
||
"settings.auto_backup.saved": "自动备份设置已保存",
|
||
"settings.auto_backup.save_error": "保存自动备份设置失败",
|
||
"settings.auto_backup.last_backup": "上次备份",
|
||
"settings.auto_backup.never": "从未",
|
||
"settings.saved_backups.label": "已保存的备份",
|
||
"settings.saved_backups.hint": "存储在服务器上的自动备份文件。下载到本地保存,或删除以释放空间。",
|
||
"settings.saved_backups.empty": "没有已保存的备份",
|
||
"settings.saved_backups.restore": "恢复",
|
||
"settings.saved_backups.download": "下载",
|
||
"settings.saved_backups.delete": "删除",
|
||
"settings.saved_backups.delete_confirm": "删除此备份文件?",
|
||
"settings.saved_backups.delete_error": "删除备份失败",
|
||
"settings.saved_backups.type.auto": "自动",
|
||
"settings.saved_backups.type.manual": "手动",
|
||
"settings.mqtt.label": "MQTT",
|
||
"settings.mqtt.hint": "配置 MQTT 代理连接,用于自动化条件和触发器。",
|
||
"settings.mqtt.enabled": "启用 MQTT",
|
||
"settings.mqtt.host_label": "代理主机",
|
||
"settings.mqtt.port_label": "端口",
|
||
"settings.mqtt.username_label": "用户名",
|
||
"settings.mqtt.password_label": "密码",
|
||
"settings.mqtt.password_set_hint": "已设置密码 — 留空以保留",
|
||
"settings.mqtt.client_id_label": "客户端 ID",
|
||
"settings.mqtt.base_topic_label": "基础主题",
|
||
"settings.mqtt.save": "保存 MQTT 设置",
|
||
"settings.mqtt.saved": "MQTT 设置已保存",
|
||
"settings.mqtt.save_error": "保存 MQTT 设置失败",
|
||
"settings.mqtt.error_host_required": "代理主机不能为空",
|
||
"settings.logs.label": "服务器日志",
|
||
"settings.logs.hint": "实时查看服务器日志。使用过滤器显示所需的日志级别。",
|
||
"settings.logs.connect": "连接",
|
||
"settings.logs.disconnect": "断开",
|
||
"settings.logs.clear": "清除",
|
||
"settings.logs.error": "日志查看器连接失败",
|
||
"settings.logs.filter.all": "所有级别",
|
||
"settings.logs.filter.info": "Info+",
|
||
"settings.logs.filter.warning": "Warning+",
|
||
"settings.logs.filter.error": "仅错误",
|
||
"device.error.power_off_failed": "关闭设备失败",
|
||
"device.removed": "设备已移除",
|
||
"device.error.remove_failed": "移除设备失败",
|
||
"device.error.settings_load_failed": "加载设备设置失败",
|
||
"device.error.brightness": "更新亮度失败",
|
||
"device.error.required": "请填写所有字段",
|
||
"device.error.update": "更新设备失败",
|
||
"device.error.save": "保存设置失败",
|
||
"device.error.clone_failed": "克隆设备失败",
|
||
"device_discovery.error.fill_all_fields": "请填写所有字段",
|
||
"device_discovery.added": "设备添加成功",
|
||
"device_discovery.error.add_failed": "添加设备失败",
|
||
"calibration.error.load_failed": "加载校准失败",
|
||
"calibration.error.css_load_failed": "加载色带源失败",
|
||
"calibration.error.test_toggle_failed": "切换测试边缘失败",
|
||
"calibration.saved": "校准已保存",
|
||
"calibration.error.save_failed": "保存校准失败",
|
||
"calibration.error.led_count_mismatch": "LED总数必须等于设备LED数量",
|
||
"calibration.error.led_count_exceeded": "校准的LED超过了LED总数",
|
||
"calibration.mode.simple": "简单",
|
||
"calibration.mode.advanced": "高级",
|
||
"calibration.switch_to_advanced": "切换到高级模式",
|
||
"calibration.advanced.title": "高级校准",
|
||
"calibration.advanced.switch_to_simple": "切换到简单模式",
|
||
"calibration.advanced.lines_title": "线段",
|
||
"calibration.advanced.canvas_hint": "拖动显示器重新排列。点击边缘选择线段。滚动缩放,拖动空白区域平移。",
|
||
"calibration.advanced.reset_view": "重置视图",
|
||
"calibration.advanced.line_properties": "线段属性",
|
||
"calibration.advanced.picture_source": "来源:",
|
||
"calibration.advanced.picture_source.hint": "此线段采样的图片来源(显示器)",
|
||
"calibration.advanced.edge": "边缘:",
|
||
"calibration.advanced.edge.hint": "从屏幕哪条边缘采样像素",
|
||
"calibration.advanced.led_count": "LED数:",
|
||
"calibration.advanced.led_count.hint": "映射到此线段的LED数量",
|
||
"calibration.advanced.span_start": "起始位置:",
|
||
"calibration.advanced.span_start.hint": "沿边缘开始采样的位置(0 = 起点,1 = 终点)。用于仅覆盖边缘的一部分。",
|
||
"calibration.advanced.span_end": "结束位置:",
|
||
"calibration.advanced.span_end.hint": "沿边缘结束采样的位置(0 = 起点,1 = 终点)。与起始位置一起定义活动区域。",
|
||
"calibration.advanced.border_width": "深度(像素):",
|
||
"calibration.advanced.border_width.hint": "从边缘向内采样多少像素。较大的值会捕获更多屏幕内部区域。",
|
||
"calibration.advanced.reverse": "反转",
|
||
"calibration.advanced.no_lines_warning": "请至少添加一条线段",
|
||
"dashboard.error.automation_toggle_failed": "切换自动化失败",
|
||
"dashboard.error.start_failed": "启动处理失败",
|
||
"dashboard.error.stop_failed": "停止处理失败",
|
||
"dashboard.error.stop_all": "停止所有目标失败",
|
||
"target.error.editor_open_failed": "打开目标编辑器失败",
|
||
"target.error.start_failed": "启动目标失败",
|
||
"target.error.stop_failed": "停止目标失败",
|
||
"target.error.clone_failed": "克隆目标失败",
|
||
"target.error.delete_failed": "删除目标失败",
|
||
"targets.stop_all.button": "全部停止",
|
||
"targets.stop_all.none_running": "当前没有运行中的目标",
|
||
"targets.stop_all.stopped": "已停止 {count} 个目标",
|
||
"targets.stop_all.error": "停止目标失败",
|
||
"audio_source.error.load": "加载音频源失败",
|
||
"audio_template.error.clone_failed": "克隆音频模板失败",
|
||
"value_source.error.load": "加载数值源失败",
|
||
"color_strip.error.editor_open_failed": "打开色带编辑器失败",
|
||
"color_strip.error.clone_failed": "克隆色带源失败",
|
||
"color_strip.error.delete_failed": "删除色带源失败",
|
||
"pattern.error.editor_open_failed": "打开图案模板编辑器失败",
|
||
"pattern.error.clone_failed": "克隆图案模板失败",
|
||
"pattern.error.delete_failed": "删除图案模板失败",
|
||
"pattern.error.capture_bg_failed": "捕获背景失败",
|
||
"stream.error.clone_picture_failed": "克隆图片源失败",
|
||
"stream.error.clone_capture_failed": "克隆捕获模板失败",
|
||
"stream.error.clone_pp_failed": "克隆后处理模板失败",
|
||
"kc_target.error.editor_open_failed": "打开关键颜色编辑器失败",
|
||
"kc_target.error.clone_failed": "克隆关键颜色目标失败",
|
||
"kc_target.error.delete_failed": "删除关键颜色目标失败",
|
||
"theme.switched.dark": "已切换到深色主题",
|
||
"theme.switched.light": "已切换到浅色主题",
|
||
"accent.color.updated": "强调色已更新",
|
||
"search.footer": "↑↓ 导航 · Enter 选择 · Esc 关闭",
|
||
"sync_clock.group.title": "同步时钟",
|
||
"sync_clock.add": "添加同步时钟",
|
||
"sync_clock.edit": "编辑同步时钟",
|
||
"sync_clock.name": "名称:",
|
||
"sync_clock.name.placeholder": "主动画时钟",
|
||
"sync_clock.name.hint": "此同步时钟的描述性名称",
|
||
"sync_clock.speed": "速度:",
|
||
"sync_clock.speed.hint": "所有关联源的动画速度倍率。1.0 = 正常,2.0 = 双倍,0.5 = 半速。",
|
||
"sync_clock.description": "描述(可选):",
|
||
"sync_clock.description.placeholder": "可选描述",
|
||
"sync_clock.description.hint": "关于此时钟用途的可选备注",
|
||
"sync_clock.status.running": "运行中",
|
||
"sync_clock.status.paused": "已暂停",
|
||
"sync_clock.action.pause": "暂停",
|
||
"sync_clock.action.resume": "恢复",
|
||
"sync_clock.action.reset": "重置",
|
||
"sync_clock.error.name_required": "时钟名称为必填项",
|
||
"sync_clock.error.load": "加载同步时钟失败",
|
||
"sync_clock.created": "同步时钟已创建",
|
||
"sync_clock.updated": "同步时钟已更新",
|
||
"sync_clock.deleted": "同步时钟已删除",
|
||
"sync_clock.paused": "时钟已暂停",
|
||
"sync_clock.resumed": "时钟已恢复",
|
||
"sync_clock.reset_done": "时钟已重置为零",
|
||
"sync_clock.delete.confirm": "删除此同步时钟?关联的源将失去同步并以默认速度运行。",
|
||
"sync_clock.elapsed": "已用时间",
|
||
"color_strip.clock": "同步时钟:",
|
||
"color_strip.clock.hint": "关联同步时钟以在多个源之间同步动画。速度在时钟上控制。",
|
||
"graph.title": "图表",
|
||
"graph.fit_all": "显示所有节点",
|
||
"graph.zoom_in": "放大",
|
||
"graph.zoom_out": "缩小",
|
||
"graph.search": "搜索节点",
|
||
"graph.search_placeholder": "搜索实体...",
|
||
"graph.legend": "图例",
|
||
"graph.minimap": "小地图",
|
||
"graph.relayout": "重新布局",
|
||
"graph.empty": "暂无实体",
|
||
"graph.empty.hint": "创建设备、源和目标后即可在此查看。",
|
||
"graph.disconnect": "断开连接",
|
||
"graph.connection_updated": "连接已更新",
|
||
"graph.connection_failed": "更新连接失败",
|
||
"graph.connection_removed": "连接已移除",
|
||
"graph.disconnect_failed": "断开连接失败",
|
||
"graph.relayout_confirm": "重置所有手动节点位置并重新布局图表?",
|
||
"graph.fullscreen": "切换全屏",
|
||
"graph.add_entity": "添加实体",
|
||
"graph.color_picker": "节点颜色",
|
||
"graph.filter": "筛选节点",
|
||
"graph.filter_placeholder": "按名称筛选...",
|
||
"graph.filter_clear": "清除筛选",
|
||
"graph.filter_running": "运行中",
|
||
"graph.filter_stopped": "已停止",
|
||
"graph.filter_types": "类型",
|
||
"graph.filter_group.capture": "捕获",
|
||
"graph.filter_group.strip": "色带",
|
||
"graph.filter_group.audio": "音频",
|
||
"graph.filter_group.targets": "目标",
|
||
"graph.filter_group.other": "其他",
|
||
"graph.bulk_delete_confirm": "删除 {count} 个选中的实体?",
|
||
"graph.nothing_to_undo": "没有可撤销的操作",
|
||
"graph.nothing_to_redo": "没有可重做的操作",
|
||
"graph.help_title": "键盘快捷键",
|
||
"graph.help.search": "搜索",
|
||
"graph.help.filter": "筛选",
|
||
"graph.help.add": "添加实体",
|
||
"graph.help.shortcuts": "快捷键",
|
||
"graph.help.delete": "删除 / 断开",
|
||
"graph.help.select_all": "全选",
|
||
"graph.help.undo": "撤销",
|
||
"graph.help.redo": "重做",
|
||
"graph.help.fullscreen": "全屏",
|
||
"graph.help.deselect": "取消选择",
|
||
"graph.help.navigate": "节点导航",
|
||
"graph.help.click": "单击",
|
||
"graph.help.click_desc": "选择节点",
|
||
"graph.help.dblclick": "双击",
|
||
"graph.help.dblclick_desc": "缩放到节点",
|
||
"graph.help.shift_click": "Shift+单击",
|
||
"graph.help.shift_click_desc": "多选",
|
||
"graph.help.shift_drag": "Shift+拖拽",
|
||
"graph.help.shift_drag_desc": "框选",
|
||
"graph.help.drag_node": "拖拽节点",
|
||
"graph.help.drag_node_desc": "重新定位",
|
||
"graph.help.drag_port": "拖拽端口",
|
||
"graph.help.drag_port_desc": "连接实体",
|
||
"graph.help.right_click": "右键边线",
|
||
"graph.help.right_click_desc": "断开连接",
|
||
"automation.enabled": "自动化已启用",
|
||
"automation.disabled": "自动化已禁用",
|
||
"scene_preset.activated": "预设已激活",
|
||
"scene_preset.used_by": "被 %d 个自动化使用",
|
||
"settings.api_keys.label": "API 密钥",
|
||
"settings.api_keys.hint": "API 密钥在服务器配置文件 (config.yaml) 中定义。编辑文件并重启服务器以应用更改。",
|
||
"settings.api_keys.empty": "未配置 API 密钥",
|
||
"settings.api_keys.load_error": "加载 API 密钥失败",
|
||
"settings.partial.label": "部分导出 / 导入",
|
||
"settings.partial.hint": "导出或导入单个实体类型。导入会替换或合并现有数据并重启服务器。",
|
||
"settings.partial.store.devices": "设备",
|
||
"settings.partial.store.output_targets": "LED 目标",
|
||
"settings.partial.store.color_strip_sources": "色带",
|
||
"settings.partial.store.picture_sources": "图像源",
|
||
"settings.partial.store.audio_sources": "音频源",
|
||
"settings.partial.store.audio_templates": "音频模板",
|
||
"settings.partial.store.capture_templates": "捕获模板",
|
||
"settings.partial.store.postprocessing_templates": "后处理模板",
|
||
"settings.partial.store.color_strip_processing_templates": "CSS 处理模板",
|
||
"settings.partial.store.pattern_templates": "图案模板",
|
||
"settings.partial.store.value_sources": "值源",
|
||
"settings.partial.store.sync_clocks": "同步时钟",
|
||
"settings.partial.store.automations": "自动化",
|
||
"settings.partial.store.scene_presets": "场景预设",
|
||
"settings.partial.export_button": "导出",
|
||
"settings.partial.import_button": "从文件导入",
|
||
"settings.partial.merge_label": "合并(添加/覆盖,保留现有)",
|
||
"settings.partial.export_success": "导出成功",
|
||
"settings.partial.export_error": "导出失败",
|
||
"settings.partial.import_success": "导入成功",
|
||
"settings.partial.import_error": "导入失败",
|
||
"settings.partial.import_confirm_replace": "这将替换所有 {store} 数据并重启服务器。继续吗?",
|
||
"settings.partial.import_confirm_merge": "这将合并 {store} 数据并重启服务器。继续吗?",
|
||
"section.empty.devices": "暂无设备。点击 + 添加。",
|
||
"section.empty.targets": "暂无 LED 目标。点击 + 添加。",
|
||
"section.empty.kc_targets": "暂无键色目标。点击 + 添加。",
|
||
"section.empty.pattern_templates": "暂无图案模板。点击 + 添加。",
|
||
"section.empty.picture_sources": "暂无源。点击 + 添加。",
|
||
"section.empty.capture_templates": "暂无捕获模板。点击 + 添加。",
|
||
"section.empty.pp_templates": "暂无后处理模板。点击 + 添加。",
|
||
"section.empty.audio_sources": "暂无音频源。点击 + 添加。",
|
||
"section.empty.audio_templates": "暂无音频模板。点击 + 添加。",
|
||
"section.empty.color_strips": "暂无色带。点击 + 添加。",
|
||
"section.empty.value_sources": "暂无值源。点击 + 添加。",
|
||
"section.empty.sync_clocks": "暂无同步时钟。点击 + 添加。",
|
||
"section.empty.cspt": "暂无 CSS 处理模板。点击 + 添加。",
|
||
"section.empty.automations": "暂无自动化。点击 + 添加。",
|
||
"section.empty.scenes": "暂无场景预设。点击 + 添加。"
|
||
}
|