/**
 * vocat 英文字典：键为源码里的中文原文（完整字符串），值为英文。
 * 约定：页面/组件继续写中文并用 t() 包裹；这里补对应英文。
 * 未收录的字符串在英文模式下原样显示中文（回退），不会报错。
 * 富文本片段（嵌套链接/代码块的说明框）不走字典，在组件里按语言分支渲染。
 */
export const EN_DICT: Record<string, string> = {
  // Device-bound VoWiFi upstream routing.
  "设备绑定": "Device Bindings",
  "绑定后，该设备的 VoWiFi 建链和通信都会使用此 SOCKS5 代理；解绑后恢复直连。配置变更会立即尝试重连 VoWiFi。":
    "Once bound, this device uses the SOCKS5 proxy for VoWiFi setup and communications. Unbinding restores direct routing. Route changes trigger an immediate VoWiFi reconnect.",
  "暂无可绑定设备": "No devices available",
  "请先在设备管理中添加设备。": "Add a device in Devices first.",
  "已绑定": "Bound",
  "VoWiFi 未启用": "VoWiFi disabled",
  "当前通过此代理通信": "Currently communicating through this proxy",
  "当前绑定": "Currently bound",
  "当前直连": "Currently direct",
  "解绑": "Unbind",
  "切换绑定": "Switch Binding",
  "绑定设备": "Bind Device",
  "台设备": "devices",
  "鉴权": "Auth",
  "加载上游代理失败": "Failed to load upstream proxies",
  "VoWiFi 上游代理": "VoWiFi Upstream Proxies",
  "将设备的 VoWiFi 建链、IMS 和短信通信通过支持 UDP Associate 的 SOCKS5 代理传输。":
    "Route device VoWiFi setup, IMS, and SMS communications through a SOCKS5 proxy with UDP Associate support.",
  "暂无上游代理": "No upstream proxies",
  "点击“新增代理”创建 SOCKS5 上游代理，然后将需要使用它的设备直接绑定；未绑定设备默认直连。":
    "Create a SOCKS5 upstream proxy, then bind the devices that should use it. Unbound devices use a direct connection.",
  "SOCKS5 地址不能为空": "SOCKS5 address is required",
  "上游代理已更新，并已执行连通性探测": "Upstream proxy updated and connectivity probed",
  "上游代理已创建，并已执行连通性探测": "Upstream proxy created and connectivity probed",
  "请先填写 SOCKS5 地址": "Enter a SOCKS5 address first",
  "SOCKS5 鉴权和 UDP Associate 探测通过": "SOCKS5 authentication and UDP Associate passed",
  "确定删除上游代理“{name}”？": "Delete upstream proxy “{name}”?",
  "绑定到该代理的设备将自动解绑并恢复直连。": "Devices bound to this proxy will be unbound and restored to direct routing.",
  "上游代理已删除": "Upstream proxy deleted",
  "当前 VoWiFi 正忙，请稍后手动重连以应用新线路": "VoWiFi is busy; reconnect it later to apply the new route",
  "正在重连 VoWiFi": "VoWiFi is reconnecting",
  "线路已保存，将在下次启动 VoWiFi 时应用": "The route was saved and will apply the next time VoWiFi starts",
  "VoWiFi 线路刷新已安排": "VoWiFi route refresh queued",
  "将在下次开启 VoWiFi 时生效": "This will apply the next time VoWiFi starts",
  "设备已绑定": "Device bound",
  "绑定失败": "Binding failed",
  "设备已解绑并恢复直连": "Device unbound and restored to direct routing",
  "解绑失败": "Unbind failed",
  "管理 VoWiFi 上游代理和设备绑定": "Manage VoWiFi upstream proxies and device bindings",
  "禁用后，已绑定设备的 VoWiFi 将停止使用该线路，不会泄漏到直连":
    "When disabled, bound devices stop using this VoWiFi route and do not leak traffic to a direct connection.",
  // ---- 外壳 / 导航 ----
  仪表盘: "Dashboard",
  设备管理: "Devices",
  代理管理: "Proxy",
  短信检测: "SMS Test",
  实时日志: "Live Logs",
  系统设置: "Settings",
  主导航: "Main navigation",
  "确认退出登录？": "Sign out now?",
  提示: "Notice",
  退出: "Sign Out",
  取消: "Cancel",
  退出登录: "Sign out",
  展开侧栏: "Expand sidebar",
  收起侧栏: "Collapse sidebar",
  页面渲染失败: "Failed to render the page",
  切换语言: "Switch language",

  // ---- 登录页 ----
  "请输入用户名和密码": "Please enter your username and password",
  欢迎回来: "Welcome back",
  "登录失败，请检查凭证": "Sign-in failed. Check your credentials.",
  "高通模块专业测试工具": "Qualcomm Module Professional Test Tool",
  "高通模块测试工具": "Qualcomm Module Test Tool",
  用户名: "Username",
  密码: "Password",
  登录: "Sign In",

  // ---- 仪表盘 ----
  设备监控: "Device Monitor",
  实时查看设备状态与出口: "Live view of device status and egress IP",
  "实时监测模组检测状态与出口连通性": "Live view of module test status and egress connectivity",
  "接管 EC20 模组并执行射频、网络、SIM 与终端功能检测": "Take over EC20 modules and run RF, network, SIM and terminal function tests",
  设备总数: "Total Devices",
  在线: "Online",
  离线: "Offline",
  最近刷新: "Last Refresh",
  加载失败: "Load failed",
  设备列表加载失败: "Failed to load the device list",
  重试: "Retry",
  暂无设备接入: "No devices connected",
  请先在设备管理中添加或接管设备: "Add or adopt a device on the Devices page first",

  // ---- 设置页：通用 ----
  管理网关参数与运行信息: "Manage gateway parameters and runtime info",
  保存通知配置: "Save Notification Settings",
  "正在加载通知配置…": "Loading notification settings…",
  通知: "Notifications",
  通知配置加载失败: "Failed to load notification settings",
  通知配置已保存: "Notification settings saved",
  通知配置保存失败: "Failed to save notification settings",
  测试通知: "Send Test",
  测试通知已发送: "Test notification sent",
  测试邮件已发送: "Test email sent",
  "Webhook 测试失败": "Webhook test failed",
  "Bark 测试失败": "Bark test failed",
  "Email 测试失败": "Email test failed",

  // ---- 设置页：安全卡 ----
  安全: "Security",
  更新访问凭证: "Update access credentials",
  当前密码: "Current Password",
  新密码: "New Password",
  确认新密码: "Confirm New Password",
  更新凭证: "Update Credentials",
  两次输入的新密码不一致: "The two new passwords do not match",
  "密码已更新，请重新登录": "Password updated. Please sign in again.",
  密码更新失败: "Failed to update password",
  显示密码: "Show password",
  隐藏密码: "Hide password",

  // ---- 设置页：系统信息卡 ----
  系统信息: "System Information",
  运行环境: "Runtime environment",
  版本: "Version",
  检查更新: "Check for Updates",
  "发现新版本:": "New version available:",
  暂无更新说明: "No release notes.",
  立即更新并重启: "Update & Restart Now",
  构建时间: "Build Time",
  配置路径: "Config Path",
  运行时长: "Uptime",
  架构: "Arch",
  当前已是最新版本: "You're on the latest version",
  检查更新失败: "Failed to check for updates",
  "正在更新...": "Updating...",
  应用更新: "Apply Update",
  应用更新失败: "Failed to apply the update",
  立即更新: "Update Now",
  知道了: "Got It",
  环境警告: "Environment Warning",
  系统信息读取失败: "Failed to read system information",

  // ---- 设置页：网络访问卡 ----
  网络访问: "Network Access",
  控制允许访问系统的来源网段: "Control which source networks may access the system",
  保存访问策略: "Save Access Policy",
  "正在加载访问策略…": "Loading access policy…",
  内网优先: "Internal Only",
  对公网开放: "Open to Public",
  "允许任意来源 IP 访问（含公网）。仅在已设置强密码且网络环境可信时使用。":
    "Allow access from any source IP (including the public internet). Use only with a strong password and a trusted network.",
  "默认仅允许内网网段访问：10/8、172.16/12、192.168/16、169.254/16、127/8、::1、fe80::/10、fc00::/7。":
    "By default only internal ranges are allowed: 10/8, 172.16/12, 192.168/16, 169.254/16, 127/8, ::1, fe80::/10, fc00::/7.",
  "对公网开放会显著扩大攻击面，请务必使用强密码并尽快切回内网优先。":
    "Opening to the public internet greatly expands the attack surface. Use a strong password and switch back to Internal Only as soon as possible.",
  额外放行网段: "Additional Allowed Ranges",
  添加网段: "Add Range",
  "在内置内网网段之外始终放行的 CIDR 或单个 IP（例如 203.0.113.0/24）。":
    "CIDRs or single IPs always allowed in addition to the built-in internal ranges (e.g. 203.0.113.0/24).",
  暂无额外放行网段: "No additional allowed ranges",
  信任代理请求头: "Trust Proxy Headers",
  "仅在系统位于可信反向代理之后时开启，按 X-Forwarded-For 判定来源；否则客户端可伪造该头绕过内网限制。":
    "Enable only behind a trusted reverse proxy; the source is then determined by X-Forwarded-For. Otherwise clients can spoof that header to bypass the internal restriction.",
  "当前连接将被拒绝，保存后可能无法继续访问": "Current connection will be denied; you may lose access after saving",
  访问策略加载失败: "Failed to load access policy",
  访问策略已保存: "Access policy saved",
  "访问策略已保存，但当前连接的来源 IP 已被拒绝":
    "Access policy saved, but the source IP of the current connection has been denied",
  访问策略保存失败: "Failed to save access policy",

  // ---- 设置页：Bot 渠道（Telegram/Pushplus） ----
  "启用 Telegram 机器人": "Enable Telegram Bot",
  "启用后会推送新短信，并允许指定管理员通过 Bot 查看状态、切卡、管理 WiFi Calling、发送短信和限时拨号。拨号只执行呼叫并自动挂断，不处理音频。":
    "When enabled, new SMS messages are pushed and the designated administrator can check status, switch profiles, manage WiFi Calling, send SMS, and place timed calls. Calls only dial and hang up automatically; audio is not processed.",
  "启用 Pushplus 推送": "Enable Pushplus",
  "该渠道只推送新收到的短信，不提供设备控制功能。每条短信都会单独推送，不按内容合并。":
    "This channel only pushes newly received SMS messages and provides no device controls. Every SMS is pushed separately and is not merged by content.",
  "例如 123456": "e.g. 123456",
  "接收短信通知和命令回复的私聊或群组 ID。群组 ID 可以是负数。":
    "Private chat or group ID that receives SMS notifications and command replies. Group IDs may be negative.",
  "只有该 Telegram 用户可以执行控制命令；留空时仅推送通知，不接受命令。":
    "Only this Telegram user may run control commands. Leave blank for notifications only.",
  "TG API 反代（可选）": "TG API Reverse Proxy (optional)",
  "HTTP 代理（可选）": "HTTP Proxy (optional)",
  "反向代理地址 (例如 https://api.telegram.org/bot%s/%s)":
    "Reverse proxy URL (e.g. https://api.telegram.org/bot%s/%s)",
  "留空直连 api.telegram.org；需要反代时填写":
    "Leave empty to connect directly to api.telegram.org; fill in when a reverse proxy is needed",
  "用于连接 API 服务器的 HTTP 代理": "HTTP proxy used to reach the API server",
  "例如 http://127.0.0.1:7890": "e.g. http://127.0.0.1:7890",
  "Pushplus 用户的 Token": "Your Pushplus token",
  "群组编码 (Topic)": "Topic",
  "群组编码，不填则发给个人": "Group topic; leave empty to message yourself",
  "渠道 (Channel)": "Channel",
  选择渠道: "Select a channel",
  "微信 (wechat)": "WeChat (wechat)",
  "企业微信 (cp)": "WeCom (cp)",
  "邮件 (mail)": "Email (mail)",

  // ---- 设置页：Bark / Email / Webhook ----
  "启用 Bark 推送": "Enable Bark",
  "启用 Email 推送": "Enable Email",
  "启用 Webhook 推送": "Enable Webhook",
  "目标 URLs": "Target URLs",
  "添加 URL": "Add URL",
  "尚未配置任何 Bark URL，点击右侧添加按钮。": "No Bark URLs yet. Click the add button on the right.",
  "尚未配置任何 Webhook URL，点击右侧添加按钮。": "No Webhook URLs yet. Click the add button on the right.",
  "分组 (Group)": "Group",
  "例如 vocat": "e.g. vocat",
  "iOS 设备上的通知分组。": "Notification group on iOS devices.",
  "通知级别 (Level)": "Level",
  选择通知级别: "Select a level",
  "iOS 的专注模式/打扰规则会根据此级别决定是否亮屏。":
    "iOS Focus/DND rules use this level to decide whether to wake the screen.",
  "时效性 (timeSensitive)": "Time-Sensitive (timeSensitive)",
  "积极 (active)": "Active (active)",
  "被动 (passive)": "Passive (passive)",
  "图标 (Icon)": "Icon",
  "图标 URL，可选": "Icon URL (optional)",
  "SMTP 主机": "SMTP Host",
  "SMTP 端口": "SMTP Port",
  "使用 SSL/TLS": "Use SSL/TLS",
  "用户名 (Username)": "Username",
  "密码 (Password)": "Password",
  邮箱账号: "Email account",
  邮箱密码或授权码: "Email password or app password",
  "发件人地址 (From)": "From Address",
  "例如 noreply@example.com": "e.g. noreply@example.com",
  "收件人地址 (To)": "Recipient Addresses",
  多个收件人请用英文逗号分隔: "Separate multiple recipients with commas",
  "数字签名密钥 (Secret)": "Signing Secret",
  "若配置，将通过请求头 X-Vocat-Signature 提供 payload 验证。":
    "If set, payload verification is provided via the X-Vocat-Signature header.",
  "用于 HMAC-SHA256 签名，选填": "Used for HMAC-SHA256 signing (optional)",
  "自定义请求头 (Headers)": "Custom Headers",
  "添加 Header": "Add Header",
  "尚未配置自定义请求头，例如 Authorization、X-Api-Key 等。":
    "No custom headers yet, e.g. Authorization, X-Api-Key.",
  "选择或输入 Header 名": "Select or type a header name",
  "值，如 Bearer xxx": "Value, e.g. Bearer xxx",
  "Content-Type 与 X-Vocat-Signature 为系统保留头，自定义同名头会被忽略。":
    "Content-Type and X-Vocat-Signature are reserved headers; custom entries with the same names are ignored.",
  "文本模板 (Text Template)": "Text Template",
  "请求超时 (ms)": "Timeout (ms)",
  最大重试次数: "Max Retries",

  // ---- 设置页：复制/通用控件 ----
  已复制: "Copied",
  "浏览器限制，复制失败，请手动复制": "Clipboard blocked by the browser; please copy manually",
  删除: "Delete",

  // ---- 实时日志 ----
  全部: "All",
  "连接中断，正在尝试重连…": "Connection lost, reconnecting…",
  已导出日志: "Logs exported",
  "查看系统运行日志，支持过滤和搜索": "View system runtime logs with filtering and search",
  继续: "Resume",
  暂停: "Pause",
  已连接: "Connected",
  未连接: "Disconnected",
  自动追尾: "Auto-follow",
  日志级别: "Log Level",
  "搜索日志内容...": "Search logs...",
  清除搜索: "Clear search",
  "等待日志...": "Waiting for logs...",
  未连接到日志流: "Not connected to the log stream",
  日志保留: "Log Retention",
  不限制: "Unlimited",
  按条数: "By Count",
  按天数: "By Days",
  天: "days",
  当前已存储: "Currently stored",
  保存: "Save",
  日志保留策略加载失败: "Failed to load the log retention policy",
  日志保留策略已保存: "Log retention policy saved",
  日志保留策略保存失败: "Failed to save the log retention policy",

  // ---- 代理管理 ----
  配置已保存: "Configuration saved",
  保存失败: "Save failed",
  已启动: "Started",
  已停止: "Stopped",
  已重启: "Restarted",
  启动失败: "Start failed",
  停止失败: "Stop failed",
  重启失败: "Restart failed",
  "读取完整实例配置失败，已使用概览数据": "Failed to load the full instance config; using overview data",
  "实例 ID 不能为空": "Instance ID is required",
  必须绑定设备: "A bound device is required",
  "代理模式仅支持 SOCKS5 或 HTTP": "Proxy mode must be SOCKS5 or HTTP",
  监听端口无效: "Invalid listen port",
  "启用认证时必须填写用户名和密码": "Username and password are required when auth is enabled",
  "实例 ID 已存在": "Instance ID already exists",
  确认删除: "Confirm Deletion",
  "ID 不能为空": "ID is required",
  "Socks5 地址不能为空": "SOCKS5 address is required",
  "前置代理已更新，并通过连通性探测": "Upstream proxy updated; connectivity check passed",
  "前置代理已创建，并通过连通性探测": "Upstream proxy created; connectivity check passed",
  前置代理已删除: "Upstream proxy deleted",
  删除失败: "Delete failed",
  请选择国家: "Please select a country",
  国家规则已保存: "Country rule saved",
  保存规则失败: "Failed to save the rule",
  "国家规则已删除，该国家将默认直连": "Country rule deleted; that country now connects directly by default",
  删除规则失败: "Failed to delete the rule",
  "管理 VoWiFi 漫游前置代理": "Manage VoWiFi roaming upstream proxies",
  漫游前置代理: "Roaming Upstream",
  启用: "Enable",
  禁用: "Disable",
  运行中: "Running",
  账号认证: "Account Auth",
  免认证: "No Auth",
  免鉴权: "No Auth",
  用户名密码: "Username & Password",
  "TCP 连接": "TCP Connection",
  可连通: "Reachable",
  无法连接: "Unreachable",
  "SOCKS5 握手": "SOCKS5 Handshake",
  "UDP Associate（VoWiFi 依赖）": "UDP Associate (required by VoWiFi)",
  支持: "Supported",
  不支持: "Unsupported",
  编辑前置代理: "Edit Upstream Proxy",
  新增前置代理: "Add Upstream Proxy",
  更新: "Update",
  创建: "Create",
  代理信息: "Proxy Info",
  "代理 ID": "Proxy ID",
  "唯一标识，如 jp-proxy-01": "Unique identifier, e.g. jp-proxy-01",
  名称: "Name",
  "例如：日本代理": "e.g. Japan Proxy",
  "Socks5 地址": "SOCKS5 Address",
  "host:port，例如 1.2.3.4:1080 或 [2001:db8::1]:1080": "host:port, e.g. 1.2.3.4:1080 or [2001:db8::1]:1080",
  启用代理: "Enable Proxy",
  禁用后绑定到该代理的国家规则会回退为直连:
    "When disabled, country rules bound to this proxy fall back to a direct connection",
  "鉴权设置（可选）": "Authentication (optional)",
  留空则免鉴权: "Leave empty for no auth",
  连通性检测结果: "Connectivity Check Results",
  "编辑已有代理时留空会保持原密码不变。": "When editing, leaving this empty keeps the current password.",
  已启用: "Enabled",
  已禁用: "Disabled",
  加载前置代理失败: "Failed to load upstream proxies",
  暂无前置代理: "No upstream proxies",
  "点击「新增代理」创建 Socks5 前置代理，再按国家配置 VoWiFi 分流规则；未配置国家默认直连":
    'Click "Add Proxy" to create a SOCKS5 upstream proxy, then configure VoWiFi routing rules by country; unconfigured countries connect directly',
  "已路由到该代理的国家": "Countries routed through this proxy",
  暂无国家规则: "No country rules",
  未配置的国家会默认直连: "Unconfigured countries connect directly by default",
  添加国家规则: "Add Country Rule",
  选择国家: "Select a country",
  编辑代理实例: "Edit Proxy Instance",
  新增代理实例: "Add Proxy Instance",
  基础设置: "Basic Settings",
  "实例 ID": "Instance ID",
  唯一标识: "Unique identifier",
  显示名称: "Display name",
  "绑定设备（必填）": "Bound Device (required)",
  选择设备: "Select a device",
  代理模式: "Proxy Mode",
  选择代理模式: "Select a proxy mode",
  监听地址: "Listen Address",
  监听端口: "Listen Port",
  启用实例: "Enable Instance",
  禁用后实例不会自动启动: "When disabled, the instance will not start automatically",
  认证设置: "Authentication",
  启用账号认证: "Enable account authentication",
  关闭后将允许免认证连接: "When off, unauthenticated connections are allowed",
  "例如 user01": "e.g. user01",
  请输入密码: "Enter a password",

  // ---- 短信检测 ----
  短信功能检测: "SMS Function Test",
  发送测试短信: "Send Test SMS",
  全部设备: "All Devices",
  暂无可用设备: "No devices available",
  "发送失败：": "Send failed: ",
  请填写完整信息: "Please fill in all fields",
  "删除后无法恢复。仅删除短信检测历史记录。": "This cannot be undone. Only the SMS test history is deleted.",
  "删除这条短信？": "Delete this message?",
  已删除短信: "Message deleted",
  "删除失败：": "Delete failed: ",
  "永久删除整个对话？": "Permanently delete the entire conversation?",
  删除对话: "Delete Conversation",
  已删除对话: "Conversation deleted",
  "通过收发测试验证模组 SMS 收发功能是否正常": "Verify modem SMS send/receive with loopback tests",
  短信加载失败: "Failed to load messages",
  汇总全部设备检测记录: "Test records across all devices",
  删除短信: "Delete Message",
  设备: "Device",
  操作: "Actions",
  "搜索联系人/内容": "Search contacts/content",
  暂无会话: "No conversations",
  "等待设备收到测试短信，或点击“发送测试短信”": 'Wait for a test message, or click "Send Test SMS"',
  发送短信: "Send Message",
  发送设备: "Sending Device",
  目标号码: "Recipient Number",
  短信内容: "Message",
  "输入短信内容...": "Type a message...",
  请选择会话: "Select a conversation",
  请选择一个会话: "Select a conversation",
  发送成功: "Sent",
  发送失败: "Send failed",
  从左侧联系人列表进入短信明细: "Open message details from the contact list on the left",
  "回复（Enter 发送）": "Reply (Enter to send)",

  // ---- 流量分析 / 设备卡 ----
  本日: "Today",
  本周: "This Week",
  本月: "This Month",
  流量分析: "Traffic Analysis",
  本周期: "This Period",
  当前设备: "Current Device",
  流量: "Traffic",
  总流量: "Total",
  日: "Daily",
  周: "Weekly",
  月: "Monthly",
  流量分析加载失败: "Failed to load traffic analysis",
  下载: "Download",
  上传: "Upload",
  合计: "Total",
  "网络已禁用，暂无流量分析": "Network disabled; no traffic analysis",
  "流量图表加载中...": "Loading traffic chart...",
  暂无流量图表数据: "No traffic chart data",
  时间: "Time",
  "检测中...": "Checking...",
  信号强度: "Signal",
  清空: "Clear",
  导出: "Export",
  条日志: "entries",
  显示: "Showing",
  条: "entries",
  "删除与 ": "Delete conversation with ",
  " 的对话": "",
  个国家规则: "country rules",
  "APN（可选）": "APN (optional)",
  "AT 端口": "AT Port",
  "AT 终端": "AT Terminal",
  "AT 终端暂不可用": "AT terminal unavailable",
  "AT=串口 / QMI=纯 QMI": "AT=serial / QMI=pure QMI",
  "AT=传统串口 / QMI=纯 QMI": "AT=legacy serial / QMI=pure QMI",
  "E911地址": "E911 Address",
  "E911地址设置页面打开失败": "Failed to open the E911 address setup page",
  "IMEI 绑定": "IMEI Binding",
  "IP 版本": "IP Version",
  "IPv4 + IPv6（双栈）": "IPv4 + IPv6 (dual stack)",
  "IPv6 地址请使用 [IPv6]:port，例如 [2001:db8::1]:1080": "For IPv6 use [IPv6]:port, e.g. [2001:db8::1]:1080",
  "Profile 下载成功": "Profile downloaded",
  "Profile 删除成功": "Profile deleted",
  "QMI 启动中": "QMI starting",
  "SIM / 设备": "SIM / Device",
  "SM-DP+ 地址 *": "SM-DP+ Address *",
  "SOCKS5 认证与 UDP ASSOCIATE 探测通过": "SOCKS5 auth and UDP ASSOCIATE probes passed",
  "Telegram / Bark / Email / Pushplus / Webhook": "Telegram / Bark / Email / Pushplus / Webhook",
  "USB 路径": "USB Path",
  "USSD 交互终端": "USSD Interactive Terminal",
  "VoWiFi 未连接": "VoWiFi not connected",
	"WiFi Calling 已注册": "WiFi Calling registered",
	"蜂窝射频已关闭（VoWiFi 接管）": "Cellular radio off (handled by VoWiFi)",
  "VoWiFi 漫游前置代理": "VoWiFi Roaming Upstream Proxies",
  "VoWiFi 通过 Socks5 代理穿透连接海外运营商。注意 Socks5 端必须支持 UDP Associate": "VoWiFi tunnels through a SOCKS5 proxy to reach overseas carriers. Note: the SOCKS5 endpoint must support UDP Associate",
  "VoWiFi/飞行开启时不可用": "Unavailable while VoWiFi/airplane mode is on",
  "WiFi-Calling · 全部就绪": "WiFi Calling · All Ready",
  "[空响应]": "[Empty response]",
  "eUICC 安装 profile 时空间不足，请删除未使用的 profile 后重试。": "Insufficient space on the eUICC for this profile; delete unused profiles and retry.",
  "vocat 最终用户许可与免责声明": "vocat End User License Agreement & Disclaimer",
  "⚠️ 删除 Profile": "⚠️ Delete Profile",
  "下载失败": "Download failed",
  "下载新 Profile": "Download New Profile",
  "不稳定": "Unstable",
  "仅 MBIM 后端": "MBIM backend only",
  "仅 QMI 后端": "QMI backend only",
  "仅在线": "Online only",
  "仅离线": "Offline only",
  "代理不能承载 VoWiFi 所需的 UDP": "The proxy cannot carry the UDP required by VoWiFi",
  "以解锁按钮": "to unlock the button",
  "会话已手动取消": "Session cancelled manually",
  "例如 *100# 或菜单回复数字": "e.g. *100# or a menu reply number",
  "例如 AT+CSQ (可自由编辑)": "e.g. AT+CSQ (freely editable)",
  "例如 ec20_3": "e.g. ec20_3",
  "例如 rsp.truphone.com": "e.g. rsp.truphone.com",
  "信道": "Channel",
  "修改名称失败": "Failed to rename",
  "全部状态": "All Statuses",
  "关闭": "Close",
  "内网 IPv4": "LAN IPv4",
  "内网 IPv6": "LAN IPv6",
  "切换到中文": "切换到中文",
  "切换浅色模式": "Switch to light mode",
  "切换深色模式": "Switch to dark mode",
  "删除短信 ": "Delete message ",
  "加载当前配置失败": "Failed to load current config",
  "加载设备信息失败": "Failed to load device info",
  "升序": "Ascending",
  "卡策略": "Card Policy",
  "即可继续": "to continue",
  "原运营商": "Original Carrier",
  "发送": "Send",
  "发送 AT 指令并查看回显（多行响应会完整返回）": "Send AT commands and view the echo (multi-line responses are returned in full)",
  "发送 USSD 代码 (如 *100#) 并等待网络菜单响应": "Send a USSD code (e.g. *100#) and wait for the network menu response",
  "可选": "optional",
  "同意并继续": "Agree & Continue",
  "名称不能为空": "Name is required",
  "名称修改成功": "Name updated",
  "否": "No",
  "启用后进飞行模式，不支持国内运营商": "Once enabled it enters airplane mode; domestic carriers are not supported",
  "命令": "Command",
  "命令 / 回复": "Command / Reply",
  "回复": "Reply",
  "固件版本": "Firmware",
  "固定 MBIM，AT 口仅用于终端": "Fixed MBIM; the AT port is for the terminal only",
  "固定 QMI，AT 口仅用于终端": "Fixed QMI; the AT port is for the terminal only",
  "地址": "Address",
  "安装": "Install",
  "实时上传速率": "Live Upload Rate",
  "实时下载速率": "Live Download Rate",
  "实时查看设备状态与出口 IP": "Live view of device status and egress IP",
  "射频关闭，断网；VoWiFi 开启时由其接管": "Radio off, network down; when VoWiFi is on it takes over",
  "已恢复自动选网": "Automatic network selection restored",
  "已取消": "Cancelled",
  "已自动解析完整的 LPA 激活码": "Full LPA activation code parsed automatically",
  "已触发重连指令，VoWiFi 服务正在重启...": "Reconnect triggered; the VoWiFi service is restarting...",
  "已锁定 PLMN": "PLMN locked",
  "当前eSIM": "Current eSIM",
  "当前卡 ICCID": "Current Card ICCID",
  "当前模式": "Current Mode",
  "当前启用的 Profile 不能删除；请先切换到另一张卡": "The active profile cannot be deleted. Switch to another profile first.",
  "Profile 已禁用；模组正在重新初始化，恢复后即可删除": "Profile disabled. The modem is reinitializing; you can delete it after recovery.",
  "Profile 启用成功": "Profile enabled successfully",
  "当前没有可展示的通知": "No notifications to show",
  "当前设备暂时无法提供 AT 串口终端，请稍后重试。": "This device cannot provide an AT serial terminal right now; please retry later.",
  "当前设备未运行": "Device is not running",
  "当前设备没有可用 AT 口": "No AT port available on this device",
  "当前通知": "Current Notifications",
  "当前通知列表": "Current Notification List",
  "快捷指令模板": "Quick Command Templates",
  "恢复中": "Recovering",
  "手动刷新": "Manual Refresh",
  "手动设置": "Manual Setup",
  "手动锁定": "Manual Lock",
  "扫描中...": "Scanning...",
  "扫描可用网络": "Scan Available Networks",
  "不可注册": "Unavailable",
  "已连接到运营商 ePDG，但运营商拒绝了此 SIM 的 EAP-AKA 鉴权。通常表示该 Profile 未开通 IMS/WiFi Calling；重复重连不会解决，需要换用支持 VoWiFi 的运营商 Profile。":
    "The carrier ePDG was reached, but it rejected EAP-AKA authentication for this SIM. The profile usually has no IMS/Wi-Fi Calling entitlement; reconnecting will not fix it, so use a carrier profile that supports VoWiFi.",
  "扫描结果只代表模组在当前位置实际收到的运营商信号，不代表模组支持的全部运营商；禁用网络表示当前 SIM 不允许注册。":
    "Scan results show only networks the modem can currently receive, not every operator the hardware supports. A forbidden network cannot be used by the current SIM.",
  "扫描网络失败": "Network scan failed",
  "扫描超时或模组忙，请稍后重试": "Scan timed out or the modem is busy; please retry later",
  "正在请求模组扫描可用网络...": "Requesting a network scan from the modem...",
  "运营商扫描需要开启蜂窝射频；请先关闭飞行模式，再手动开始扫描。": "Carrier scanning requires the cellular radio. Turn off airplane mode, then start the scan manually.",
  "拒绝&退出程序": "Decline & Exit",
  "指令下发失败": "Failed to issue the command",
  "排序": "Sort",
  "排序：信号": "Sort: Signal",
  "排序：名称": "Sort: Name",
  "控制设备": "Control Device",
  "控制面不稳定": "Control plane unstable",
  "控制面恢复中": "Control plane recovering",
  "搜索网络中": "Searching for networks",
  "搜索设备 / ICCID / IMEI / 网卡": "Search device / ICCID / IMEI / interface",
  "改动将在此卡激活后生效": "Changes take effect once this card is activated",
  "数据未开启": "Data is off",
  "数据平面": "Data Plane",
  "方向": "Direction",
  "无法读取 IMEI（控制口可能挂死），暂不可添加。": "Cannot read the IMEI (the control port may be stuck); cannot add for now.",
  "无法读取该设备 IMEI（可能控制口挂死），请执行 AT!RESET 或切换组态后重试": "Cannot read the device IMEI (the control port may be stuck); run AT!RESET or switch the USB composition and retry",
  "是": "Yes",
  "显示名称（可选）": "Display Name (optional)",
  "显示敏感信息": "Show sensitive info",
  "暂无 AT 会话记录": "No AT session records",
  "暂无 Profile": "No Profiles",
  "暂无 USSD 会话记录": "No USSD session records",
  "暂无可添加设备（或系统未发现新的模组）": "No devices to add (or the system found no new modems)",
  "暂无数据": "No data",
  "暂无设备": "No devices",
  "最后原因": "Last Reason",
  "最后成功：": "Last success: ",
  "未检测到 eUICC": "No eUICC detected",
  "未生效": "Not in effect",
  "未知": "Unknown",
  "未知日期": "Unknown date",
  "未知网络": "Unknown network",
  "未驻网": "Not registered",
  "本机号码": "Own Number",
  "本次为周期性确认，点击": "This is a periodic confirmation. Click",
  "模式:": "Mode:",
  "正在准备页面组件与资源": "Preparing page components and resources",
  "正在加载…": "Loading…",
  "正在加载设备...": "Loading devices...",
  "正在加载 eSIM...": "Loading eSIM...",
  "正在加载通知...": "Loading notifications...",
  "正在探测设备...": "Probing device...",
  "正在恢复自动选网...": "Restoring automatic network selection...",
  "正在搜索周围网络，这可能需要 1-3 分钟...": "Scanning for nearby networks; this may take 1-3 minutes...",
  "正在注册到 {plmn}，请稍候（可能需要 1-2 分钟）...": "Registering to {plmn}; please wait (this may take 1-2 minutes)...",
  "正在连接...": "Connecting...",
  "此SIM卡可能不支持 eUICC 功能": "This SIM card may not support eUICC",
  "此类 WWAN QMI 设备运行后端固定为 QMI；AT 口仍会保留给 AT 终端。": "This WWAN QMI device is fixed to the QMI backend; the AT port remains available for the AT terminal.",
  "此类设备固定 MBIM，AT 口仅用于终端": "This device is fixed to MBIM; the AT port is for the terminal only",
  "此类设备固定 QMI，AT 口仅用于终端": "This device is fixed to QMI; the AT port is for the terminal only",
  "注册状态": "Registration",
  "浏览器限制，请手动复制": "Blocked by the browser; please copy manually",
  "添加失败": "Add failed",
  "添加设备配置": "Add Device Config",
  "点击右上角“添加设备”开始接管": 'Click "Add Device" in the top right to start adopting',
  "生产商:": "Manufacturer:",
  "由系统自动探测": "Auto-detected by the system",
  "留空自动识别": "Leave empty for auto-detection",
  "目标 eUICC": "Target eUICC",
  "确定": "OK",
  "确定重连": "Reconnect",
  "确认操作": "Confirm Action",
  "确认码": "Confirmation Code",
  "确认重启": "Confirm Reboot",
  "立即轮换": "Rotate Now",
  "立即重启": "Reboot Now",
  "等待模组响应...": "Waiting for the modem...",
  "等待网络响应...": "Waiting for the network...",
  "等待设备重新枚举": "Waiting for device re-enumeration",
  "等待采样": "Waiting for samples",
  "网卡接口": "Network Interface",
  "网络": "Network",
  "VoWiFi / 飞行模式 开关跟着 SIM 卡走，切换即时生效": "VoWiFi / airplane mode switches follow the SIM card and take effect immediately",
  "网络模式": "Network Mode",
  "网络选择设置": "Network Selection Settings",
  "自动": "Auto",
  "自动识别（从发现设备填充）": "Auto-detect (filled from discovered devices)",
  "自动识别（添加时绑定）": "Auto-detect (bound when added)",
  "自动默认": "Auto (default)",
  "获取 eSIM Profiles 失败": "Failed to fetch eSIM profiles",
  "获取 eSIM 信息失败": "Failed to fetch eSIM info",
  "获取当前通知列表失败": "Failed to fetch the notification list",
  "菜单回复": "Menu Reply",
  "设备后端模式": "Device Backend Mode",
  "设备启动中": "Device starting",
  "设备尚未识别到 SIM 卡 ICCID，策略不可操作": "No SIM ICCID detected on this device yet; policy is unavailable",
  "设备已删除": "Device deleted",
  "设备已添加并开始接管": "Device added and adoption started",
  "设备当前处于纯 QMI 模式，但没有解析到可用的 AT 口，因此无法提供 AT 串口终端。": "The device is in pure QMI mode and no usable AT port was found, so the AT serial terminal is unavailable.",
  "设备当前未启动，AT 终端暂时不可用。待设备运行后，如果存在可用的 AT 口，即可在这里直接发送 AT 指令。": "The device is not running and the AT terminal is temporarily unavailable. Once it is running and an AT port is available, you can send AT commands here directly.",
  "设备当前没有可用的 AT 口，因此无法提供 AT 串口终端。": "No usable AT port on this device, so the AT serial terminal is unavailable.",
  "设备离线，改动已保存，激活/上线后生效": "Device offline; changes saved and will apply once it is active/online",
  "设备网络未连接，请先启动网络": "Device network not connected; start the network first",
  "设备路径": "Device Path",
  "设备运行模式": "Device Operation Mode",
  "设备配置": "Device Config",
  "设备配置已添加": "Device config added",
  "设备重新扫描完成": "Device rescan completed",
  "设置失败": "Setting failed",
  "证书:": "Certificates:",
  "详情": "Details",
  "请先填写 Socks5 地址": "Please fill in the SOCKS5 address first",
  "请求": "request",
  "请求失败": "Request failed",
  "请求异常": "Request error",
  "请求未完成，检查服务状态后重试": "Request did not complete; check the service and retry",
  "请输入": "Please type",
  "请输入 SM-DP+ 地址": "Please enter the SM-DP+ address",
  "请选择": "Select",
  "请选择一个未配置设备": "Please select an unconfigured device",
  "超时(ms)": "Timeout (ms)",
  "轮换失败": "Rotation failed",
  "轮换请求已发送": "Rotation request sent",
  "输入新名称": "Enter a new name",
  "输入菜单选项数字": "Enter the menu option number",
  "运营商扫描完成": "Carrier scan completed",
  "运营商网络选择": "Carrier Network Selection",
  "运行模式": "Operation Mode",
  "运行状态": "Status",
  "近1分钟上传": "Upload (1 min)",
  "近1分钟下载": "Download (1 min)",
  "连通性检测失败": "Connectivity check failed",
  "选定设备状态": "Selected Device Status",
  "选择一个“未配置”的设备，系统将自动填充 AT 端口与识别信息。": 'Select an "unconfigured" device; the system fills in the AT port and identity automatically.',
  "选择常用命令（可选）": "Choose a common command (optional)",
  "选择目标 eUICC": "Select target eUICC",
  "通知重试发送失败": "Notification resend failed",
  "通知重试发送成功": "Notification resent",
  "配置存储在数据库中，部分字段可能需要重启生效": "Configuration is stored in the database; some fields may require a restart to take effect",
  "配置已保存，但部分变更需要重启服务后生效": "Configuration saved, but some changes require a service restart",
  "采样中断": "Sampling interrupted",
  "重启中": "Rebooting",
  "重启指令已送达，设备正在重新启动": "Reboot command delivered; the device is restarting",
  "重新扫描失败": "Rescan failed",
  "重新接管中": "Re-adopting",
  "重试渲染": "Retry render",
  "重连 VoWiFi": "Reconnect VoWiFi",
  "重连命令下发失败": "Failed to issue the reconnect command",
  "错误分类": "Error Category",
  "降序": "Descending",
  "隐藏敏感信息": "Hide sensitive info",
  "频段": "Band",
  "飞行": "Airplane",
  "飞行模式": "Airplane Mode",
  "驻网被拒": "Registration denied",

  // ---- 设备页 / 详情 / eSIM / 通用控件（i18n 补充） ----
  概览: "Overview",
  配置: "Configuration",
  eSIM: "eSIM",
  USSD: "USSD",
  添加设备: "Add Device",
  重新扫描: "Rescan",
  请选择左侧设备查看详情: "Select a device on the left to view details",
  "设备数量已达上限，无法继续添加": "Device limit reached; cannot add more",
  配额: "Quota",
  "暂无设备，点击右上角“添加设备”开始接管": 'No devices yet. Click "Add Device" in the top-right to start adopting',
  按周期统计该设备的上下行流量: "Uplink/downlink traffic for this device by period",
  固件: "Firmware",
  设置: "Set Up",
  "设备离线，策略仅展示，切换操作已禁用": "Device offline; the policy is view-only and switching is disabled",
  重启模组: "Reboot Modem",
  当前: "Current",
  锁定: "Lock",
  切换: "Switch",
  改名: "Rename",
  策略: "Policy",
  删除设备: "Delete Device",
  保存配置: "Save Config",
  "切换 IP": "Rotate IP",
  短信: "SMS",
  多轮会话中: "Session Active",
  取消会话: "Cancel Session",
  "正在加载策略...": "Loading policy...",
  策略加载失败: "Failed to load policy",
  可用: "Available",
  重发: "Resend",
  开始下载: "Start Download",
  恢复自动选网: "Restore Auto Selection",
  "加载中...": "Loading...",
  返回: "Back",
  最新: "Latest",
  加载更多: "Load More",
  刷新: "Refresh",

  // ---- 代理 / 国家规则（i18n 补充） ----
  "绑定:": "Bound:",
  "鉴权:": "Auth:",
  国家规则: "Country Rules",
  新增代理: "Add Proxy",
  新增实例: "Add Instance",
  删除规则: "Delete Rule",
  保存规则: "Save Rule",
  检测连通性: "Test Connectivity",
  "UDP 中继地址：": "UDP Relay Address: ",
  "规则按 SIM 归属 MCC 解析国家。例如 US 会覆盖 MCC 310/311/312/313/314/315/316 等表内分组；没有配置规则的国家默认直连。需要重启 VoWiFi 生效。":
    "Country is resolved from the SIM home MCC. For example, US covers the listed MCC 310/311/312/313/314/315/316 groups; countries without a rule use direct connection. Restart VoWiFi to take effect.",
  "VoWiFi 通过此 Socks5 代理连接运营商，实现跨区域本地 VoWiFi。":
    "VoWiFi connects to the carrier through this Socks5 proxy, enabling cross-region local VoWiFi. ",

  // ---- eSIM 通道恢复（热插拔后） ----
  "热插拔后 eSIM 通道未恢复": "eSIM channel not recovered after hot-swap",
  "EC20 已检测到新 SIM，但基带的 UIM/APDU 逻辑通道仍卡在旧卡状态。普通刷新只会重复失败，需要重启模组重新初始化卡通道；不会删除、下载或切换任何 Profile。":
    "EC20 detected the new SIM, but the baseband UIM/APDU logical channel is still stuck on the old card. A normal refresh will only keep failing; the modem must be restarted to re-initialize the card channel. No profile will be deleted, downloaded, or switched.",
  "重启模组并自动复检": "Reboot modem & re-check",
  "重新检测": "Re-detect",

  // ---- AT 快捷指令（按 group · item 分组翻译） ----
  基础: "Basics",
  网络控制: "Network Control",
  漫游服务: "Roaming",
  "USBNET / 模式": "USBNET / Mode",
  "短信 / USSD": "SMS / USSD",
  "连通性 (AT)": "Connectivity (AT)",
  "模块信息 (ATI)": "Module Info (ATI)",
  "信号 (AT+CSQ)": "Signal (AT+CSQ)",
  "运营商 (AT+COPS?)": "Operator (AT+COPS?)",
  "网络模式 (AT+QNWINFO)": "Network Mode (AT+QNWINFO)",
  "注册状态 (AT+CREG?)": "Registration (AT+CREG?)",
  "固件版本 (AT+CGMR)": "Firmware (AT+CGMR)",
  "所有信号 (AT+QENG=\"servingcell\")": "All Cells (AT+QENG=\"servingcell\")",
  "飞行模式 ON (AT+CFUN=0)": "Airplane ON (AT+CFUN=0)",
  "飞行模式 OFF (AT+CFUN=1)": "Airplane OFF (AT+CFUN=1)",
  "重启模组 (AT+CFUN=1,1)": "Reboot Modem (AT+CFUN=1,1)",
  "附着状态 (AT+CGATT?)": "Attach Status (AT+CGATT?)",
  "脱附 (AT+CGATT=0)": "Detach (AT+CGATT=0)",
  "附着 (AT+CGATT=1)": "Attach (AT+CGATT=1)",
  "关闭漫游 (AT+QCFG=\"roamservice\",1,1)": "Disable Roaming (AT+QCFG=\"roamservice\",1,1)",
  "恢复自动 (AT+QCFG=\"roamservice\",255,1)": "Restore Auto (AT+QCFG=\"roamservice\",255,1)",
  "查询模式 (AT+QCFG=\"usbnet\"?)": "Query Mode (AT+QCFG=\"usbnet\"?)",
  "设为 QMI (AT+QCFG=\"usbnet\",0)": "Set QMI (AT+QCFG=\"usbnet\",0)",
  "设为 ECM (AT+QCFG=\"usbnet\",1)": "Set ECM (AT+QCFG=\"usbnet\",1)",
  "列出短信 (AT+CMGL=4)": "List SMS (AT+CMGL=4)",
  "读取短信示例 (AT+CMGR=1)": "Read SMS Example (AT+CMGR=1)",
  "删除所有短信 (AT+CMGD=1,4)": "Delete All SMS (AT+CMGD=1,4)",
  "USSD 示例 (AT+CUSD=1,\"*100#\",15)": "USSD Example (AT+CUSD=1,\"*100#\",15)",

  // ---- tf 插值模板 ----
  "输入 {last4}": "Enter {last4}",
  "确定要{action}此 Profile ({iccid}) 吗？切换后设备会短暂断网。":
    "{action} profile {iccid}? The device will briefly lose connectivity.",
  "确定禁用当前 Profile ({iccid}) 吗？禁用后此 eUICC 将没有活动号码，蜂窝网络、VoWiFi 和短信都会中断，直到重新启用或下载其他 Profile。若 Profile 策略要求禁用即删除，eUICC 可能在禁用时直接删除它。":
    "Disable the active profile ({iccid})? This eUICC will have no active number, and cellular, VoWiFi, and SMS will stop until another profile is enabled or downloaded. If its policy requires deletion on disable, the eUICC may delete it immediately.",
  "确定启用此 Profile ({iccid}) 吗？切换后设备会短暂断网。":
    "Enable profile {iccid}? The device will briefly lose connectivity.",
  "{action} Profile": "{action} Profile",
  "Profile {action}成功": "Profile {action}d",
  "{action}失败": "{action} failed",
  "Profile 删除成功，{s}": "Profile deleted, {s}",
  "Profile 下载成功，{s}": "Profile downloaded, {s}",
  "[网络不支持/无响应]\n{text}": "[Network unsupported / no response]\n{text}",
  "[被网络终止]\n{text}": "[Terminated by network]\n{text}",
  "eUICC #{n} (...{tail}) — {free} 可用": "eUICC #{n} (...{tail}) — {free} available",
  "已锁定网络 {plmn}": "Locked to network {plmn}",
  "{items} 未就绪": "{items} not ready",
  "国家规则 — {name}": "Country Rules — {name}",
  "本机：{phone}": "Local: {phone}",
  "设备：{device}": "Device: {device}",
  "确定删除实例 {id}？": "Delete instance {id}?",
  "确定对设备 {id} 执行 IP 轮换？": "Rotate the IP of device {id}?",
  "确定对设备 {id} 发起 VoWiFi 环境的重新连接拨号？这将在后台重新注册 IMS 链路。":
    "Reconnect the VoWiFi dial-up of device {id}? This re-registers the IMS link in the background.",
  "确定对设备 {id} 发送重启模组指令？设备将在此期间脱网和失联数秒。":
    "Send a modem reboot command to device {id}? It will drop off the network for a few seconds.",
  "确定删除设备 {id} 的配置？删除后该设备将停止接管（代理/网络/AT）。":
    "Delete the configuration of device {id}? The device will stop being adopted (proxy/network/AT).",
  "短信已发送{suffix}": "Message sent{suffix}",
  "（{parts}段）": " ({parts} parts)",
  "首次打开会稍慢，资源缓存后会更快": "The first open may be slower; cached resources make later loads faster",
  "。点下方「检测连通性」可在保存前验证 Socks5 握手与 UDP Associate。":
    ". Use \"Test Connectivity\" below to verify the Socks5 handshake and UDP Associate before saving.",
  "此操作不可逆！请输入 ICCID 后 4 位「{last4}」以确认删除 Profile「{name}」":
    "This cannot be undone! Type the last 4 ICCID digits \"{last4}\" to confirm deleting profile \"{name}\".",
  "确定删除前置代理「{name}」？": "Delete upstream proxy \"{name}\"?",
  "绑定到该代理的国家规则将自动删除，相关国家会恢复直连。":
    "Country rules bound to this proxy will be deleted, and those countries will revert to a direct connection.",
  "{encoding} · 预计 {parts} 段 · {length} 字": "{encoding} · ~{parts} seg · {length} chars",
};
