{
  "_version": 1,
  "localConfig": {
    "createConfigDirError": "无法为本地配置文件创建目录",
    "createConfigError": "无法创建本地配置文件",
    "writeConfigError": "无法写入本地配置文件",
    "serializeConfigError": "无法解析本地配置",
    "readConfigError": "无法读取本地配置文件"
  },
  "web": {
    "ws": {
      "connected": "WS 连接成功",
      "disconnected": "WS 连接断开",
      "receiverLagged": "WS 通道接收延迟，跳过 %{skipped} 条消息",
      "wsChannelClosed": "WS 通道已关闭或发生错误",
      "failedToParseMessage": "解析消息失败"
    },
    "server": {
      "startingOn": "Web 服务正在启动",
      "webServerAccessible": "Web 服务可访问于",
      "failedToOpenBrowser": "打开浏览器失败",
      "responseError": "响应错误"
    },
    "mapping": {
      "setActiveMapping": "设置当前映射",
      "setActiveMappingSuccess": "成功设置当前映射",
      "failedToLoadMappingConfig": "加载映射配置失败",
      "nameNotSafe": "映射配置名称不安全",
      "mappingConfigExists": "映射配置已存在",
      "createMappingConfig": "创建新映射配置",
      "cannotDeleteActiveMapping": "无法删除激活的映射",
      "mappingConfigNotExists": "映射配置不存在",
      "deleteMappingConfigError": "无法删除映射配置",
      "mappingConfigNotFound": "未找到映射配置",
      "renameActivateMappingSuccess": "成功将映射配置从 %{oldFile} 重命名为 %{newFile}，已成功设置当前映射 %{newFile}",
      "renameMappingConfigSuccess": "成功将映射配置从 %{file} 重命名为 %{newFile}",
      "copyMappingConfig": "将映射配置从 %{file} 复制到 %{newFile}",
      "updateAndActivateMappingConfig": "更新并激活映射配置",
      "failedToLoadUpdatedMappingConfig": "加载更新后的映射配置失败",
      "updateMappingConfig": "更新映射配置",
      "unableReadMappingConfigDir": "无法读取映射配置目录",
      "readMappingListSuccess": "映射列表读取成功",
      "cannotReadMappingConfig": "无法读取映射配置",
      "cannotDeserializeConfig": "无法反序列化映射配置",
      "invalidMappingConfig": "无效的映射配置",
      "mappingReadSuccess": "成功读取映射配置",
      "invalidSize": "无效的尺寸",
      "migrateMappingConfig": "将映射配置从 %{file} 迁移到 %{newFile}",
      "deleteMappingConfig": "删除映射配置"
    },
    "device": {
      "deviceListObtained": "成功获取设备列表",
      "alreadyControlled": "设备已被控制",
      "pushScrcpyServerSuccess": "成功将 scrcpy 服务端推送到设备",
      "reverseSuccess": "成功将 %{remote} 反向转发到 %{local} ",
      "removingDeviceAfterExit": " scrcpy 已退出，移除相应设备",
      "tryStartingScrcpy": "正在尝试启动 scrcpy 应用",
      "reconnectDevice": "重新连接设备",
      "decontrolDevice": "解除设备控制",
      "deviceNotFound": "未找到设备",
      "adbConnect": "Adb 连接 %{address} 成功",
      "adbConnectFailed": "Adb 连接 %{address} 失败",
      "adbPairSuccess": "Adb 设备 %{address} 使用验证码 %{code} 配对成功",
      "adbPairFailed": "Adb 设备 %{address} 使用验证码 %{code} 配对失败",
      "screenshotError": "设备截图失败",
      "failedGetScreenshotFile": "获取截图文件失败",
      "failedRemoveScreenshot": "为设备删除截图文件失败",
      "noDeviceControlled": "无受控设备",
      "setDisplayPowerSuccess": "成功设置所有受控设备的显示开关",
      "evalScriptSuccess": "脚本执行成功",
      "evalScriptError": "脚本执行失败",
      "startingScrcpyApp": "启动 scrcpy 应用...",
      "sendKeySuccess": "成功发送按键到所有受控设备"
    },
    "config": {
      "getLocalConfigSuccess": "成功获取本地配置",
      "invalidLanguage": "无效的语言",
      "setLanguageSuccess": "语言设置成功",
      "languageMustBeString": "语言必须为字符串",
      "restartToApplyWebPort": "请重启应用以应用新的网页端口",
      "webPortMustBeU16": "网页端口必须为 u16",
      "adbPathSetSuccess": "成功设置 adb 路径",
      "adbPathSetFailed": "设置 adb 路径失败",
      "adbPathMustBeString": "adb 路径必须为字符串",
      "restartToApplyControllerPort": "请重启应用以应用新的控制服务端口",
      "controllerPortMustBeU16": "控制服务端口必须为 u16",
      "setVerticalMaskHeightSuccess": "竖屏蒙版高度设置成功",
      "verticalMaskHeightMustBeu32": "竖屏蒙版高度必须为 u32",
      "setHorizontalMaskWidthSuccess": "横屏蒙版宽度设置成功",
      "horizontalMaskWidthMustBeu32": "横屏蒙版宽度必须为 u32",
      "setVerticalPositionSuccess": "成功设置竖屏蒙版位置",
      "verticalPositionTypeError": "竖屏蒙版位置必须是数组 [i32, i32]",
      "setHorizontalPositionSuccess": "横屏蒙版位置设置成功",
      "horizontalPositionTypeError": "横屏蒙版位置必须是数组 [i32, i32]",
      "pleaseRequestForOperation": "请为此操作请求 %{api}",
      "setMappingLabelOpacitySuccess": "成功设置标签不透明度",
      "mappingLabelOpacityRange": "标签不透明度必须在 0.0 到 1.0 之间",
      "invalidMappingKey": "无效的配置项",
      "successfullySet": "成功设置",
      "setClipboardSyncSuccess": "成功设置剪切板同步开关",
      "clipboardSyncTypeError": "剪切板同步开关必须为 bool",
      "invalidVideoCodec": "不支持的视频编码",
      "videoCodecTypeError": "视频编码必须为 string",
      "setVideoCodecSuccess": "成功设置视频编码（下次连接时生效）",
      "videoBitRateTypeError": "视频码率必须为 u32",
      "setVideoBitRateSuccess": "成功设置视频码率（下次连接时生效）",
      "setVideoMaxSizeSuccess": "成功设置视频最大尺寸（下次连接时生效）",
      "videoMaxSizeTypeError": "视频最大尺寸必须为 u32",
      "setVideoMaxFpsSuccess": "成功设置视频最大尺寸（下次连接时生效）",
      "videoMaxFpsTypeError": "视频最大FPS必须为 u32",
      "openDataPathFailed": "打开数据目录失败",
      "openDataPathSuccess": "成功打开数据目录",
      "getUpdateInfoSuccess": "成功获取更新信息",
      "alwaysOnTopMustBeBool": "蒙版置顶必须为 bool"
    }
  },
  "utils": {
    "cannotGetCurrentExePath": "无法获取当前可执行文件路径",
    "noParentDirectory": "可执行文件没有父目录",
    "checkForUpdateFailed": "检查更新失败",
    "updateAvailable": "检测到新版本",
    "noUpdateAvailable": "当前版本已是最新版本"
  },
  "scrcpy": {
    "syncClipboardFromMain": "从主设备同步剪贴板",
    "deviceRotation": "设备 %{scid} 旋转 %{degree}°",
    "crChannelClosed": "CR 通道已关闭，退出消息处理程序",
    "startingController": "正在启动 scrcpy 控制器",
    "startReceiveCommand": "开始从 Web 服务器接收指令",
    "deviceNotRecorded": "受控设备未被记录",
    "errorAcceptingConnection": "接受连接时出错",
    "creatingMainControl": "正在创建 scrcpy 主控制连接",
    "creatingMainVideo": "正在创建 scrcpy 主视频连接",
    "creatingSubControl": "正在创建 scrcpy 子控制连接",
    "mainConnectionNotExist": "Scrcpy 主连接不存在",
    "shutdownMain": "正在关闭 scrcpy 主连接",
    "subConnectionNotExist": "Scrcpy 子连接不存在",
    "shutdownSub": "正在关闭 scrcpy 子连接",
    "dChannelClosed": "D 通道已关闭，退出消息处理程序",
    "controllerStopped": "Scrcpy 控制器已停止",
    "failedReadControlConnection": "无法从 scrcpy 控制连接读取数据",
    "controlConnectionCancelled": "Scrcpy 控制连接读取端被手动关闭",
    "controlConnWriteFailed": "写入控制连接写入端失败",
    "controlChannelClosed": "控制通道已关闭或发生错误",
    "controlCnnShutdownUnexpectedly": "Scrcpy 控制写入连接意外关闭",
    "invalidDeviceName": "收到无效的 UTF-8 设备名称",
    "controlConnectionReaderCancelled": "Scrcpy 控制连接读取端被手动关闭",
    "controlReadShutdownUnexpectedly": "Scrcpy 控制读取连接意外关闭",
    "handleControlConnection": "正在处理 scrcpy 控制连接...",
    "controlConnectionClosed": "Scrcpy 控制连接已关闭",
    "handleVideoConnection": "正在处理 scrcpy 视频连接...",
    "failedToReadControlMetadata": "读取控制元数据失败",
    "failedToReadVideoMetadata": "读取视频元数据失败",
    "invalidVideoCodec": "不支持的视频编码标识",
    "failedToReadFrameHeader": "读取媒体数据包头部失败",
    "videoConnectionReaderCancelled": "Scrcpy 视频连接读取端被手动关闭",
    "videoReadShutdownUnexpectedly": "Scrcpy 视频连接意外关闭",
    "videoConnectionClosed": "Scrcpy 视频连接已关闭",
    "unknownControlMsg": "收到来自主设备的未知控制消息",
    "videoCodec": "视频编码",
    "noDefaultOutputDevice": "没有可用的输出设备"
  },
  "controller": {
    "csReceiverLagged": "CS 接收器延迟，跳过 %{skipped} 条消息"
  },
  "adb": {
    "failedToOpenFile": "打开文件失败",
    "failedToPushFile": "文件推送失败",
    "failedToPullFile": "从设备拉取文件“%{file}”失败",
    "reverseFailed": "无法将 '%{remote}' 反向转发到为 '%{local}'",
    "forwardFailed": "转发 '%{local}' 到 '%{remote}' 失败",
    "adbShellCommandFailed": "执行 adb shell 命令失败",
    "missingWidth": "缺少宽度",
    "missingHeight": "缺少高度",
    "parseWidthFailed": "解析宽度失败",
    "parseHeightFailed": "解析高度失败",
    "getScreenSizeFailed": "获取屏幕尺寸失败",
    "adbNotFound": "未找到 adb",
    "killServerFailed": "终止 adb 服务器失败",
    "parseDeviceAddressFailed": "解析设备地址失败",
    "connectDeviceFailed": "连接设备失败",
    "pairFailed": "与设备配对失败"
  },
  "mask": {
    "windowMovedAndResized": "窗口移动到（%{left},%{top}）并调整为 %{width}x%{height}",
    "enterNormalMappingMode": "进入普通映射模式",
    "mainDeviceConnected": "主设备已连接",
    "mainDeviceDisconnected": "主设备连接已断开",
    "loadActivateMappingConfig": "加载并激活映射配置",
    "padLabelNotSupported": "轮盘标签不支持 %{count} 个绑定",
    "mapping": {
      "pressedScriptError": "按下触发脚本错误",
      "releasedScriptError": "抬起触发脚本错误",
      "heldScriptError": "按住触发脚本错误",
      "pressedScriptRuntimeError": "按下触发脚本运行时错误",
      "releasedScriptRuntimeError": "抬起触发脚本运行时错误",
      "heldScriptRuntimeError": "按住触发脚本运行时错误",
      "parseScriptFailed": "使用 pest 解析脚本失败",
      "noProgramFound": "未解析出程序",
      "rawInputModeHint": "进入直控模式，长按鼠标右键退出",
      "exitRawInputMode": "退出直控模式",
      "usingMappingConfig": "使用映射配置",
      "useDefaultMapping": "使用默认映射配置",
      "invalidPosition": "无效的位置（%{x}, %{y}），x 和 y 必须大于 %{margin}",
      "enterFpsMode": "进入 FPS 模式",
      "exitFpsMode": "退出 FPS 模式",
      "mappingActionExceedsMaxCount": "映射操作“%{name}”超过最大允许数量（当前：%{count}，最大：%{max}）",
      "mappingConfigValidationFailed": "映射配置校验失败:",
      "fileNameNotSafe": "文件名不安全",
      "mappingConfigNotFound": "未找到映射配置文件",
      "cannotCreateConfigDir": "无法为配置文件创建父目录",
      "cannotCreateMappingConfig": "无法创建映射配置文件",
      "cannotWriteMappingConfig": "无法写入映射配置文件",
      "invalidGamepadButtonCode": "无效的手柄按键代码",
      "unknownGamepadButton": "未知的手柄按键类型",
      "invalidCode": "无效的 %{name} 按键码",
      "unknownKeyCode": "未知的 KeyCode 类型",
      "failedToParseTo": "无法解析为",
      "unknownMouseButton": "未知的鼠标按键类型"
    },
    "evalScriptnoMappingError": "无法执行脚本：不存在激活的映射，无法获取映射配置尺寸",
    "video": {
      "noDecoder": "视频解码器未创建"
    },
    "exitStopMappingMode": "退出映射模式",
    "windowLevelChanged": "蒙版置顶"
  }
}
