"aliyun.access_key_id": "AccessKey ID" "aliyun.access_key_secret": "AccessKey Secret" "aliyun.auth_mode": "Auth mode" "aliyun.auth_token_mode": "Group token" "aliyun.auth_triple_mode": "Per-device secret" "aliyun.build_failed": "Failed to build connection: {e}" "aliyun.default_preset_name": "Alibaba Cloud device" "aliyun.device_id": "Device ID" "aliyun.device_id_required": "Device ID cannot be empty" "aliyun.device_secret": "DeviceSecret (per-device)" "aliyun.device_secret_ph": "Triple: DeviceSecret" "aliyun.generate_connect": "Generate & connect" "aliyun.group": "Group (optional)" "aliyun.group_id": "Group ID" "aliyun.help": "Token mode (Alibaba Cloud MQTT): endpoint {实例ID}.mqtt.aliyuncs.com, clientId={GroupId}@@@{设备ID}, password is the HMAC-SHA1 signature. Per-device secret (IoT Platform): endpoint {ProductKey}.iot-as-mqtt.{地域}.aliyuncs.com, signed per the official triple spec." "aliyun.hmac_init_failed": "HMAC init failed: {e}" "aliyun.instance_id": "Instance ID" "aliyun.instance_id_required": "Instance ID cannot be empty" "aliyun.preset_name": "Preset name" "aliyun.product_key": "ProductKey (per-device)" "aliyun.product_key_ph": "Triple: ProductKey" "aliyun.region": "Region" "aliyun.region_ph": "e.g. cn-shanghai (optional)" "aliyun.save_preset": "Save preset" "aliyun.saved_presets": "Saved presets" "aliyun.title": "Alibaba Cloud IoT" "aliyun.token_required_fields": "Group ID, AccessKey ID and AccessKey Secret cannot be empty" "aliyun.triple_requires_device_name": "Per-device secret mode requires DeviceName" "aliyun.triple_requires_pk_ds": "Per-device secret mode requires ProductKey and DeviceSecret" "color.blue": "Blue" "color.cyan": "Cyan" "color.green": "Green" "color.indigo": "Indigo" "color.magenta": "Magenta" "color.orange": "Orange" "color.purple": "Purple" "color.red": "Red" "color.rose": "Rose" "color.yellow": "Yellow" "common.advanced": "Advanced" "common.all": "All" "common.auto": "Auto" "common.browse": "Browse…" "common.cancel": "Cancel" "common.clear": "Clear" "common.close": "Close" "common.collapse": "Collapse" "common.delete": "Delete" "common.edit": "Edit" "common.new": "New" "common.pause": "Pause" "common.resume": "Resume" "common.retry": "Retry" "common.save": "Save" "common.send": "Send" "common.subscribe": "Subscribe" "common.text": "Text" "common.update": "Update" "connview.logs": "Logs" "connview.messages": "Messages" "connview.subscriptions": "Subscriptions" "dir.published": "Published" "dir.received": "Received" "encode.base64_failed": "Base64 decode failed: {e}" "encode.hex_failed": "Hex decode failed: {e}" "encode.hex_invalid": "Hex decode failed: non-hex character present" "encode.hex_odd": "Hex length must be even (two chars per byte)" "engine.cancelled": "Connection cancelled" "engine.connack_rejected": "Connection rejected: {code}" "engine.connack_rejected_code": "Connection rejected: {code} (code {n})" "engine.connect_failed": "Connect failed: {e}" "engine.connect_ok": "Connected (session_present: {sp})" "engine.connecting": "Connecting to {host}:{port} ({protocol}, {transport})" "engine.connection_error": "Connection error: {e}" "engine.connection_not_found": "Connection not found" "engine.disconnect_received": "DISCONNECT received: {code} (code {n})" "engine.disconnected_by_server": "Disconnected by server" "engine.disconnected_by_server_active": "Server closed the connection" "engine.disconnected_by_server_code": "Disconnected by server: {code}" "engine.events_dropped": "UI cannot keep up: dropped {n} high-frequency events (messages/logs) so far" "engine.internal_task_failed": "Internal task failed: {e}" "engine.puback": "Publish acknowledged (packet {n})" "engine.puback_reason": "Publish acknowledged (packet {n}, reason {reason})" "engine.pubcomp": "QoS2 publish complete (packet {n})" "engine.publish_failed": "Publish failed: {e}" "engine.publish_no_connection": "Publish failed: connection not found" "engine.publish_outgoing": "Message sent (packet {n})" "engine.publish_sent": "Published to {topic} (QoS {qos}, retain={retain})" "engine.pubrec": "QoS2 publish received (packet {n})" "engine.received_message": "Received: {topic} ({n} bytes)" "engine.received_message_qos": "Received: {topic} ({n} bytes, QoS {qos})" "engine.reconnect_give_up": "Reconnect failed {attempts} times, reached the max of {max}, giving up: {e}" "engine.reconnect_retry": "Connection error, retrying in {delay}s (attempt {attempts}): {e}" "engine.suback": "Subscribe confirmed (packet {n})" "engine.suback_codes": "Subscribe confirmed (packet {n}): {codes}" "engine.subscribe_rejected": "Subscribe rejected: {e}" "engine.subscribe_request_failed": "Subscribe request failed: {e}" "engine.subscribe_topic": "Subscribing: {topic} (QoS {qos})" "engine.test_timeout": "Connection test timed out ({secs}s) — check the host and port" "engine.unsuback": "Unsubscribe confirmed" "engine.unsuback_packet": "Unsubscribe confirmed (packet {n})" "engine.unsubscribe_failed": "Unsubscribe failed: {e}" "engine.unsubscribe_ok": "Unsubscribed: {topic}" "engine.user_disconnect": "Disconnected by user request" "form.auth_section": "Auth & Keep-alive" "form.auto_connect": "Connect on app start" "form.auto_reconnect": "Auto reconnect on disconnect" "form.auto_resub": "Auto-resubscribe on connect" "form.basics": "Basics" "form.cert_pair_required": "Client certificate and key must be provided together" "form.clean_start": "Clean Start / Clean Session" "form.client_id": "Client ID" "form.client_id_required": "Client ID cannot be empty" "form.conn_timeout": "Connect timeout (s)" "form.conn_timeout_invalid": "Connect timeout must be an integer 1-65535 (seconds)" "form.content_type_ph": "Content type (optional)" "form.err_positive": "must be > 0 (0 is an MQTT 5 protocol error)" "form.err_range": "must be an integer 0-65535" "form.err_uint": "must be a non-negative integer" "form.group": "Group" "form.host": "Host" "form.host_required": "Host cannot be empty" "form.keep_alive": "Keep Alive (s)" "form.keep_alive_short": "Keep Alive" "form.max_packet": "Maximum Packet Size" "form.max_reconnects": "Max reconnects (0 = unlimited)" "form.max_reconnects_invalid": "Max reconnects must be a non-negative integer (0 = unlimited)" "form.max_reconnects_ph": "0 = unlimited" "form.name": "Name" "form.name_ph": "Connection name" "form.name_required": "Connection name cannot be empty" "form.new_group": "New group" "form.new_group_hint": "Overrides the selected group when filled" "form.no_group": "No group" "form.password": "Password" "form.password_ph": "Password (optional)" "form.path_missing": "{label}: path not found: {p}" "form.port": "Port" "form.port_invalid": "Port must be an integer 1-65535" "form.protocol": "Protocol" "form.receive_max": "Receive Maximum" "form.receive_max_invalid": "Receive Maximum cannot exceed 65535" "form.receive_max_ph": "Server receive maximum" "form.receive_max_short": "Receive Maximum" "form.regen_client_id": "Regenerate Client ID" "form.response_topic_ph": "Response topic (optional)" "form.saved_reconnect": "Saved. Takes effect after reconnect" "form.session_expiry": "Session expiry (s)" "form.session_expiry_invalid": "Session expiry must be a non-negative integer (0 = session ends with connection)" "form.session_expiry_ph": "seconds (0 = session ends with connection)" "form.test": "Test Connection" "form.test_ok": "Connection test succeeded" "form.testing": "Testing…" "form.timeout_ph": "seconds (default 10)" "form.title": "Connection Settings" "form.topic_alias": "Topic Alias" "form.topic_alias_invalid": "Topic Alias Maximum cannot exceed 65535" "form.topic_alias_max": "Topic Alias Maximum" "form.transport": "Transport" "form.username": "Username" "form.username_ph": "Username (optional)" "form.will_content_type": "Content Type" "form.will_enable": "Enable last will" "form.will_payload": "Will payload" "form.will_payload_ph": "Will message" "form.will_response_topic": "Response Topic" "form.will_section": "Last Will" "form.will_topic": "Will topic" "form.ws_path": "WS Path" "form.ws_path_required": "WS path is required for WS/WSS transport" "io.err_item_id": "Item {n}: id must not be empty" "io.err_item_invalid": "Item {n} is not a valid connection: {e}" "io.err_missing_field": "JSON object lacks the \"connections\" array" "io.err_parse_json": "Failed to parse JSON: {e}" "io.err_parse_json_path": "Failed to parse {p}" "io.err_read": "Failed to read {p}: {e}" "io.err_serialize": "Failed to serialize connections: {e}" "io.err_utf8": "{p} is not valid UTF-8" "io.err_write": "Failed to write {p}: {e}" "io.exported": "Exported {n} connections to {path}" "io.imported": "Imported {n}, skipped {n2}" "kv.add": "Add property" "msg.binary_hint": " (binary — switch to Hex in details)" "msg.clear_confirm": "Clear all messages of this connection? This cannot be undone." "msg.clear_sub_filter": "Clear subscription filter" "msg.clear_title": "Clear Messages" "msg.clear_tooltip": "Clear messages of this connection" "msg.copy_details": "Copy full details (incl. MQTT 5 props)" "msg.copy_payload": "Copy raw payload" "msg.copy_topic": "Copy topic" "msg.count": "{n} msgs" "msg.details": "Details" "msg.details_copied": "Details copied" "msg.empty": "No messages yet — they will appear here once you subscribe" "msg.expiry": "Message Expiry" "msg.filter_placeholder": "Filter by topic or content…" "msg.latest_only": "Showing latest {n} only" "msg.log_title": "Connection Logs" "msg.no_logs": "No logs yet" "msg.no_match": "No matching messages" "msg.pause_tooltip": "Pause message stream (messages keep arriving in background)" "msg.payload": "Payload" "msg.payload_copied": "Payload copied" "msg.resume_tooltip": "Resume live scrolling" "msg.seconds": "{n}s" "msg.topic": "Topic" "msg.topic_copied": "Topic copied" "msg.truncated": "Truncated {n}KB" "preset.default_name": "New preset" "preset.default_name_n": "New preset {n}" "preset.empty": "No presets yet — click \"New\" above to create one" "preset.manage_title": "Manage Publish Presets" "preset.name_exists": "Preset name \"{name}\" already exists" "preset.payload_field": "Payload (stored raw; variables rendered on send)" "preset.payload_format": "Payload format" "preset.pick_delete_first": "Select a preset to delete first" "preset.pick_first": "Select or create a preset first" "preset.saved": "Preset \"{name}\" saved" "preset.section": "Publish Presets" "preset.user_props": "User Properties" "pub.collapse": "Collapse publish panel" "pub.collapsed_hint": "Publish panel collapsed" "pub.content_type_ph": "Content-Type (optional)" "pub.correlation_ph": "Correlation Data (optional)" "pub.delete_confirm": "Delete preset \"{name}\"? This cannot be undone." "pub.delete_item": "Delete \"{name}\"" "pub.delete_title": "Delete Preset" "pub.expand": "Expand publish panel" "pub.expiry_field": "Expiry (s)" "pub.expiry_invalid": "Message expiry must be a non-negative integer (seconds)" "pub.json_invalid": "Invalid JSON: {e}" "pub.manage_presets": "Manage presets…" "pub.mqtt5_props": "MQTT 5 Properties" "pub.offline_not_sent": "Offline: message not sent" "pub.payload_placeholder": "Message payload; supports {{variables}} and {{$ts}} {{$uuid}}" "pub.payload_preset_ph": "Message payload; supports {{variables}}" "pub.preset_menu": "Message Presets" "pub.preset_name_hint": "Preset name, e.g. temperature-report" "pub.preset_name_required": "Preset name is required" "pub.preset_overwritten": "Preset \"{name}\" overwritten" "pub.preset_saved": "Preset saved" "pub.response_topic_ph": "Response Topic (optional)" "pub.save_preset": "Save current as preset…" "pub.save_title": "Save Message Preset" "pub.seconds_hint": "seconds, e.g. 60" "pub.send_disabled": "Offline — cannot send" "pub.sent_hidden": "Sent (hidden by current filter — not shown in the stream)" "pub.topic_placeholder": "Publish topic" "pub.topic_preset_ph": "Publish topic; supports {{variables}}" "pub.topic_required": "Publish topic cannot be empty" "pub.vars": "Variable injection" "pub.vars_count": "Variable injection ({n} placeholders)" "resmon.auto_refresh": "Auto refresh" "resmon.budget": "Budget {p}% used ({used} / {total})" "resmon.committed": "Committed memory" "resmon.committed_hint": "Physical pages committed by the process" "resmon.cpu": "CPU usage" "resmon.cpu_hint": "Normalized by core count" "resmon.n_msgs": "{n} msgs" "resmon.no_conn": "No connections" "resmon.peak": "Peak {v}" "resmon.refresh_now": "Refresh now" "resmon.section": "Messages & Connections" "resmon.stats": "{n} connections ({m} connected) · {t} tabs · {msgs} messages in memory (cap {cap}/conn) · {logs} log lines" "resmon.threads_handles": "Threads · handles" "resmon.threads_hint": "tokio engine + GPUI renderer" "resmon.uptime": "Up {t}" "resmon.version_live": "Version v{v} · refreshes every 1.5s" "resmon.version_paused": "Version v{v} · auto-refresh paused" "resmon.working_set": "Working set" "settings.about": "About" "settings.auto_update": "Check for updates on start" "settings.byte_budget": "Plus a per-connection byte budget of {n} MB: under heavy traffic, oldest messages are evicted by size first" "settings.data_dir": "Data directory" "settings.language": "Language" "settings.license": "Apache-2.0 license" "settings.log_dir": "Log directory" "settings.max_messages": "Messages kept in memory per connection (100-100000)" "settings.mkdir_failed": "Failed to create log folder: {e}" "settings.open_dir": "Open folder" "settings.open_dir_failed": "Failed to open folder: {e}" "settings.open_log_dir": "Open log folder" "settings.show_millis": "Show milliseconds in timestamps" "settings.tagline": "A cross-platform MQTT debug client built with GPUI, aiming at MQTTX" "settings.theme": "Theme" "settings.theme_preset": "Theme preset" "settings.version_line": "Version {v} (update source: {src})" "sidebar.collapse": "Collapse sidebar (Ctrl+B)" "sidebar.connect": "Connect" "sidebar.connections": "Connections" "sidebar.delete": "Delete Connection" "sidebar.delete_confirm": "Delete \"{name}\"? This also deletes {sub_count} subscriptions and disconnects. This cannot be undone." "sidebar.disconnect": "Disconnect" "sidebar.dup_suffix": "{name} (copy)" "sidebar.duplicate": "Duplicate" "sidebar.empty": "No connections yet. Click + above to create one" "sidebar.expand": "Expand sidebar (Ctrl+B)" "sidebar.no_match": "No matching connections" "sidebar.search": "Search connections…" "sidebar.ungrouped": "Ungrouped" "ssl.ca": "CA certificate (PEM)" "ssl.ca_ph": "Path to CA certificate (PEM, optional)" "ssl.cert": "Client certificate (PEM)" "ssl.cert_ph": "Path to client certificate (PEM, optional)" "ssl.key": "Client key (PEM)" "ssl.key_ph": "Path to client private key (PEM, optional)" "ssl.n_configured": "{n} configured" "ssl.pick_file": "Select certificate / key file" "ssl.section": "SSL/TLS" "ssl.skip_verify": "Skip CA verification (trust any server cert)" "status.connected": "Connected" "status.connecting": "Connecting" "status.disconnected": "Disconnected" "status.error": "Error" "sub.alias": "Alias (optional)" "sub.cancel_edit": "Cancel editing" "sub.collapse": "Collapse subscriptions panel" "sub.color": "Subscription color" "sub.color_clear": "Clear color" "sub.color_random": "Random color" "sub.disable": "Disable subscription" "sub.edit": "Edit subscription" "sub.editing": "Editing: {topic}" "sub.empty_hint": "Subscribe to a topic and messages will show up here" "sub.enable": "Enable subscription" "sub.expand": "Expand subscriptions panel" "sub.failed": "Subscribe failed: {e}" "sub.identifier": "Subscription Identifier" "sub.identifier_field": "Subscription Identifier" "sub.identifier_invalid": "Subscription identifier must be a positive integer" "sub.mqtt5_options": "MQTT 5 Subscription Options" "sub.no_local": "No Local" "sub.rap": "Retain As Published" "sub.retain_handling": "Retain Handling" "sub.rh0": "0 Send at every subscribe" "sub.rh1": "1 Send only for new subscription" "sub.rh2": "2 Do not send" "sub.saved_offline": "Offline: subscription saved" "sub.saved_offline_resub": "Offline: subscription saved, restored on connect" "sub.topic_placeholder": "Topic filter, supports # +; separate multiple with commas/spaces" "sub.topic_required": "Topic filter cannot be empty" "sub.unsubscribe": "Unsubscribe" "tab.welcome_hint": "Pick a connection on the left, or create a new one to start debugging" "tab.welcome_title": "Get started with MQTTX" "theme.dark": "Dark" "theme.light": "Light" "theme.system": "Follow system" "titlebar.aliyun": "Alibaba Cloud Devices" "titlebar.export": "Export Connections" "titlebar.import": "Import Connections" "titlebar.new_connection": "New Connection" "titlebar.pin": "Pin window on top" "titlebar.pin_failed": "Failed to set always-on-top" "titlebar.resmon": "Resource Monitor" "titlebar.settings": "Settings" "titlebar.subtitle": "MQTT debug client" "titlebar.switch_dark": "Switch to dark theme" "titlebar.switch_light": "Switch to light theme" "titlebar.unpin": "Unpin window" "titlebar.variables": "Global Variables" "tls.ca_invalid_cert": "Invalid certificate in CA file {p}: {e}" "tls.ca_no_certs": "No certificate found in CA file {p}" "tls.ca_parse_failed": "Failed to parse CA file {p}: {e}" "tls.ca_read_failed": "Failed to read CA file {p}: {e}" "tls.cert_key_pair_required": "Client certificate and client key must be configured together" "tls.client_auth_failed": "Failed to load client certificate/key: {e}" "tls.client_cert_no_certs": "No certificate found in client certificate file {p}" "tls.client_cert_parse_failed": "Failed to parse client certificate file {p}: {e}" "tls.client_cert_read_failed": "Failed to read client certificate file {p}: {e}" "tls.client_key_parse_failed": "Failed to parse client key file {p}: {e}" "tls.client_key_read_failed": "Failed to read client key file {p}: {e}" "tls.init_failed": "TLS init failed: {e}" "tls.native_roots_failed": "Failed to load system root certificates: {detail}" "update.apply": "Update to v{v} now" "update.check": "Check for updates" "update.check_hint": "Check GitHub Releases for a new version" "update.checking": "Checking…" "update.checking_long": "Checking for updates…" "update.discard": "Discard this update" "update.discarded": "Staged update discarded" "update.downloading": "Downloading {pct}% ({done} / {total})" "update.downloading_size": "Downloading {done}" "update.failed": "Update failed: {e}" "update.found": "New version v{v} found — downloads, replaces itself and restarts" "update.install_failed": "Install failed: {e}" "update.install_later": "Install on next start" "update.install_now": "Install now" "update.not_now": "Not now" "update.ready": "Version v{v} downloaded and verified, ready to install" "update.ready_body": "Version v{v} has been downloaded (sha256 verified)." "update.ready_title": "Update Ready" "update.recheck": "Check again" "update.staged": "Staged — it will install on next start" "update.up_to_date": "You are up to date" "var.builtin_inline": "Built-in: {{$ts}} (s), {{$ts_ms}} (ms), {{$uuid}} · injected on publish" "var.dialog_builtin": "Built-in: {{$ts}} (s), {{$ts_ms}} (ms), {{$uuid}}" "var.dialog_hint": "Reference {{variables}} in publish topics and payloads." "var.no_reference": "No {{variable}} reference in topic/payload" "var.preview": "Preview: {tp} | {pl}" "var.reextract": "Re-extract placeholders" "var.section": "Variables ({n})" "var.value": "Value" "will.enabled_hint": "Enabled" "will.topic_required": "Will topic cannot be empty" "will.topic_wildcard": "Will topic cannot contain wildcards + or #" # MQTTX en 文案(rust-i18n:文件名即 locale,扁平 key: value)。 # key = 语义标识符 ns.name;en/zh-CN 两文件键集合必须一致——单测强制。