2026-07-14 01:37:06 +00:00
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version= "2.1" language= "zh_CN" >
2026-07-16 08:14:51 +00:00
<context>
<name> Bootstrap</name>
<message>
<location filename= "../Bootstrap/main.cpp" line= "22" />
<source> Update Handoff Failed</source>
<translation> 更新交接失败</translation>
</message>
<message>
<location filename= "../Bootstrap/main.cpp" line= "139" />
<source> Bootstrap arguments are incomplete.</source>
<translation> Bootstrap 启动参数不完整。</translation>
</message>
<message>
<location filename= "../Bootstrap/main.cpp" line= "158" />
<source> The update plan is missing or invalid.</source>
<translation> 更新计划文件缺失或格式无效。</translation>
</message>
<message>
<location filename= "../Bootstrap/main.cpp" line= "195" />
<source> Cannot restart Updater.</source>
<translation> 无法重新启动 Updater。</translation>
</message>
<message>
<location filename= "../Bootstrap/main.cpp" line= "197" />
<source>
Failed file: %1</source>
<translation>
失败文件:%1</translation>
</message>
</context>
2026-07-14 01:37:06 +00:00
<context>
<name> ConfigHelper</name>
<message>
2026-07-16 08:14:51 +00:00
<location filename= "../Common/ConfigHelper.cpp" line= "219" />
2026-07-14 01:37:06 +00:00
<source> The user canceled the administrator permission confirmation.</source>
<translation> 用户取消了管理员权限确认。</translation>
</message>
<message>
2026-07-16 08:14:51 +00:00
<location filename= "../Common/ConfigHelper.cpp" line= "220" />
2026-07-14 01:37:06 +00:00
<source> Windows error %1</source>
<translation> Windows 错误 %1</translation>
</message>
<message>
2026-07-16 08:14:51 +00:00
<location filename= "../Common/ConfigHelper.cpp" line= "230" />
2026-07-14 01:37:06 +00:00
<source> Administrator Permission Required</source>
<translation> 需要管理员权限</translation>
</message>
<message>
2026-07-16 08:14:51 +00:00
<location filename= "../Common/ConfigHelper.cpp" line= "231" />
2026-07-21 03:02:42 +00:00
<source> The current operation needs administrator permission to modify a protected file.
2026-07-14 01:37:06 +00:00
Target file: %1
Reason: %2
Click OK, then choose Yes in the Windows permission confirmation dialog.</source>
2026-07-21 03:02:42 +00:00
<translation> 当前操作需要管理员权限来修改受保护文件。
2026-07-14 01:37:06 +00:00
目标文件:%1
原因:%2
2026-07-21 03:02:42 +00:00
点击“确定”,然后在 Windows 权限确认窗口中选择“是”。</translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-07-16 08:14:51 +00:00
<location filename= "../Common/ConfigHelper.cpp" line= "238" />
2026-07-14 01:37:06 +00:00
<source> The user canceled the administrator permission request.</source>
<translation> 用户取消了管理员权限请求。</translation>
</message>
</context>
2026-07-21 03:02:42 +00:00
<context>
<name> IntegrityHelper</name>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "83" />
2026-07-21 03:02:42 +00:00
<source> Cannot verify signed manifest because OpenSSL support is unavailable. Stage: installed version verification.</source>
<translation> 无法验证签名 Manifest,因为当前程序未启用 OpenSSL。阶段:已安装版本校验。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "92" />
2026-07-21 03:02:42 +00:00
<source> Cannot open manifest public key. Stage: installed version verification. Public key path: %1.</source>
<translation> 无法打开 Manifest 公钥。阶段:已安装版本校验。公钥路径:%1。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "102" />
2026-07-21 03:02:42 +00:00
<source> Manifest public key is invalid. Stage: installed version verification. Public key path: %1.</source>
<translation> Manifest 公钥无效。阶段:已安装版本校验。公钥路径:%1。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "115" />
2026-07-21 03:02:42 +00:00
<source> Manifest RSA signature is invalid. Stage: installed version verification. This usually means the cached manifest was changed, the client public key does not match the server private key, or the wrong version cache is being used.</source>
<translation> Manifest RSA 签名无效。阶段:已安装版本校验。通常表示本地缓存的 Manifest 被改过、客户端公钥与服务端私钥不匹配,或正在使用错误版本的缓存。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "136" />
2026-07-21 03:02:42 +00:00
<source> Local signed manifest cache is missing. Stage: installed version verification. Version: %1. Expected cache file: %2. This cache is created after the same version is published or installed successfully.</source>
<translation> 本地签名 Manifest 缓存缺失。阶段:已安装版本校验。版本:%1。期望缓存文件:%2。该缓存会在同版本发布或安装成功后生成。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "144" />
2026-07-21 03:02:42 +00:00
<source> Local signed manifest cache is not valid JSON. Stage: installed version verification. Version: %1. File: %2. JSON error: %3.</source>
<translation> 本地签名 Manifest 缓存不是合法 JSON。阶段:已安装版本校验。版本:%1。文件:%2。JSON 错误:%3。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "159" />
2026-07-21 03:02:42 +00:00
<source> Local signed manifest cache is incomplete. Stage: installed version verification. Version: %1. File: %2.</source>
<translation> 本地签名 Manifest 缓存不完整。阶段:已安装版本校验。版本:%1。文件:%2。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "168" />
<source> Local manifest SHA-256 does not match the cached envelope. Stage: installed version verification. Version: %1.
Expected SHA-256: %2
Actual SHA-256: %3</source>
<translation type= "unfinished" ></translation>
</message>
<message>
<location filename= "../Common/IntegrityHelper.cpp" line= "177" />
<source> Local manifest cache is unsigned, but require_manifest_signature is enabled. Stage: installed version verification. Version: %1.</source>
<translation type= "unfinished" ></translation>
</message>
<message>
<location filename= "../Common/IntegrityHelper.cpp" line= "186" />
2026-07-21 03:02:42 +00:00
<source> Signed manifest payload is not valid JSON. Stage: installed version verification. Version: %1. File: %2. JSON error: %3.</source>
<translation> 签名 Manifest 内容不是合法 JSON。阶段:已安装版本校验。版本:%1。文件:%2。JSON 错误:%3。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "197" />
<source> Local signed manifest identity does not match this application. Stage: installed version verification. Expected product/channel/version: %1 / %2 / %3. Manifest product/channel/version: %4 / %5 / %6.</source>
<translation type= "unfinished" ></translation>
2026-07-21 03:02:42 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "211" />
2026-07-21 03:02:42 +00:00
<source> Signed manifest contains an unsafe file path. Stage: installed version verification. Version: %1. Path: %2.</source>
<translation> 签名 Manifest 包含不安全文件路径。阶段:已安装版本校验。版本:%1。路径:%2。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "219" />
2026-07-21 03:02:42 +00:00
<source> A required installed file is missing. Stage: installed version verification. Version: %1. Manifest path: %2. Checked path: %3. The local installation no longer matches the published version.</source>
<translation> 缺少必需的已安装文件。阶段:已安装版本校验。版本:%1。Manifest 路径:%2。检查路径:%3。本地安装目录已不再匹配发布版本。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "229" />
<source> Installed file size does not match the local manifest. Stage: installed version verification. Version: %1. Manifest path: %2. Local path: %3.
Expected size: %4 bytes
Actual size: %5 bytes</source>
<translation type= "unfinished" ></translation>
</message>
<message>
<location filename= "../Common/IntegrityHelper.cpp" line= "238" />
2026-07-21 03:02:42 +00:00
<source> Installed file SHA-256 does not match the local signed manifest. Stage: installed version verification. Version: %1. Manifest path: %2. Local path: %3.
Expected SHA-256: %4
Actual SHA-256: %5
This means the installed file is different from the version that was published or installed. If this is a developer test machine, check whether the local Release directory was recompiled or overwritten after publishing.</source>
<translation> 已安装文件的 SHA-256 与本地签名 Manifest 不一致。阶段:已安装版本校验。版本:%1。Manifest 路径:%2。本地路径:%3。
期望 SHA-256: %4
实际 SHA-256: %5
这表示当前安装目录里的文件和当初发布或安装成功的版本不同。如果这是开发测试机器,请检查发布后是否又重新编译或覆盖了本地 Release 目录。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "241" />
2026-07-21 03:02:42 +00:00
<source> < cannot read file> </source>
<translation> < 无法读取文件> </translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Common/IntegrityHelper.cpp" line= "264" />
2026-07-21 03:02:42 +00:00
<source> An executable or DLL exists locally but is not declared in the signed manifest. Stage: installed version verification. Version: %1. Extra file: %2. Remove unexpected executable/plugin files or publish a new version that declares them.</source>
<translation> 本地存在签名 Manifest 未声明的 EXE 或 DLL。阶段:已安装版本校验。版本:%1。额外文件:%2。请删除异常的可执行文件/插件,或发布一个声明这些文件的新版本。</translation>
</message>
</context>
2026-07-14 01:37:06 +00:00
<context>
<name> Launcher</name>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "82" />
2026-07-14 01:37:06 +00:00
<source> Checking for software updates...</source>
<translation> 正在检查软件更新...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "243" />
2026-07-14 01:37:06 +00:00
<source> Authorization Rejected</source>
<translation> 授权被拒绝</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "209" />
2026-07-21 03:02:42 +00:00
<source> Cannot start the main application because the executable file does not exist.
Executable: %1
Check main_executable and install_root in the generated client configuration.</source>
<translation> 无法启动主程序,因为主程序文件不存在。
可执行文件:%1
请检查生成的客户端配置中的 main_executable 和 install_root。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "221" />
2026-07-21 03:02:42 +00:00
<source> Cannot start the main application because the one-time launch ticket could not be created.
Executable: %1
Details: %2</source>
<translation> 无法启动主程序,因为一次性启动 ticket 创建失败。
可执行文件:%1
详细信息:%2</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "232" />
2026-07-21 03:02:42 +00:00
<source> Cannot start the main application process.
Executable: %1
Ticket file: %2
Check file permissions, dependent DLLs/shared libraries, and whether the executable can run independently.</source>
<translation> 无法启动主程序进程。
可执行文件:%1
Ticket 文件:%2
请检查文件权限、依赖 DLL/共享库,以及该可执行文件是否能独立运行。</translation>
</message>
<message>
<location filename= "../Launcher/main.cpp" line= "262" />
2026-09-08 17:08:58 +08:00
<source> New Version Available</source>
<translation> 发现新版本</translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "258" />
<source> Version %1 is available. Update now?</source>
<translation> 发现新版本 %1,是否现在更新?</translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "83" />
<source> SimCAE Launcher</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "103" />
<location filename= "../Launcher/main.cpp" line= "117" />
<source> Customer Login</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "105" />
<source> Enter the customer account email:</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "106" />
<source> %1
Enter the customer account email:</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "118" />
<source> Enter the customer account password:</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "126" />
<source> Logging in...</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "132" />
<source> Customer login failed: %1</source>
<translation type= "unfinished" ></translation>
2026-07-20 06:43:46 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "136" />
<source> Customer Login Failed</source>
<translation type= "unfinished" ></translation>
2026-07-20 06:43:46 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "150" />
<location filename= "../Launcher/main.cpp" line= "170" />
<source> Refreshing customer session...</source>
<translation type= "unfinished" ></translation>
2026-07-20 06:43:46 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "156" />
<source> A customer account is required to check authorized updates and download release packages.</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "164" />
<source> Checking authorized updates...</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "176" />
<source> The stored customer session has expired. Please log in again.</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "245" />
<source> The current customer account is not authorized to download this update.</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "250" />
<source> Update Server Unavailable</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "251" />
<source> Cannot connect to the update server. The installed application will be started without downloading an update.</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "269" />
<location filename= "../Launcher/main.cpp" line= "316" />
2026-07-14 01:37:06 +00:00
<source> Startup Failed</source>
<translation> 启动失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "271" />
<location filename= "../Launcher/main.cpp" line= "318" />
2026-07-14 01:37:06 +00:00
<source> Cannot start the main application: %1</source>
<translation> 无法启动主程序:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "289" />
2026-07-21 03:02:42 +00:00
<source> Cannot start the updater because the executable file does not exist.
Executable: %1
Check updater_executable and install_root in the generated client configuration.</source>
<translation> 无法启动 Updater,因为 Updater 可执行文件不存在。
可执行文件:%1
请检查生成的客户端配置中的 updater_executable 和 install_root。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "299" />
2026-07-21 03:02:42 +00:00
<source> Cannot start the updater process.
Executable: %1
Arguments: %2
Check file permissions, dependent DLLs/shared libraries, and whether the updater can run independently.</source>
<translation> 无法启动 Updater 进程。
可执行文件:%1
参数:%2
请检查文件权限、依赖 DLL/共享库,以及 Updater 是否能独立运行。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "310" />
<source> Offline startup. Starting...</source>
<translation type= "unfinished" ></translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "288" />
<location filename= "../Launcher/main.cpp" line= "298" />
<source> Updater Startup Failed</source>
<translation> 更新器启动失败</translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/main.cpp" line= "309" />
2026-07-14 01:37:06 +00:00
<source> The application is up to date. Starting...</source>
<translation> 当前已是最新版本,正在启动...</translation>
</message>
</context>
2026-07-21 03:02:42 +00:00
<context>
<name> LocalStateHelper</name>
<message>
<location filename= "../Common/LocalStateHelper.cpp" line= "35" />
<source> Cannot create local state file: %1. Error: %2.</source>
<translation> 无法创建本地状态文件:%1。错误:%2。</translation>
</message>
<message>
<location filename= "../Common/LocalStateHelper.cpp" line= "46" />
<source> Cannot open local state file: %1. Error: %2.</source>
<translation> 无法打开本地状态文件:%1。错误:%2。</translation>
</message>
<message>
<location filename= "../Common/LocalStateHelper.cpp" line= "60" />
<source> Local state file is not valid JSON. File: %1. JSON error: %2.</source>
<translation> 本地状态文件不是合法 JSON。文件:%1。JSON 错误:%2。</translation>
</message>
<message>
<location filename= "../Common/LocalStateHelper.cpp" line= "76" />
<source> Local state has not been loaded.</source>
<translation> 本地状态尚未加载。</translation>
</message>
<message>
<location filename= "../Common/LocalStateHelper.cpp" line= "86" />
<source> Cannot save local state file: %1. Error: %2.</source>
<translation> 无法保存本地状态文件:%1。错误:%2。</translation>
</message>
</context>
<context>
<name> PolicyHelper</name>
<message>
<location filename= "../Common/PolicyHelper.cpp" line= "36" />
<source> Cannot open signed version policy file: %1. Error: %2.</source>
<translation> 无法打开签名版本策略文件:%1。错误:%2。</translation>
</message>
<message>
<location filename= "../Common/PolicyHelper.cpp" line= "45" />
<source> Signed version policy is not valid JSON. File: %1. JSON error: %2.</source>
<translation> 签名版本策略不是合法 JSON。文件:%1。JSON 错误:%2。</translation>
</message>
<message>
<location filename= "../Common/PolicyHelper.cpp" line= "66" />
<source> Cannot save signed version policy file: %1. Error: %2.</source>
<translation> 无法保存签名版本策略文件:%1。错误:%2。</translation>
</message>
<message>
<location filename= "../Common/PolicyHelper.cpp" line= "105" />
<source> OpenSSL is unavailable, so the signed version policy cannot be verified.</source>
<translation> 当前程序未启用 OpenSSL,无法验证签名版本策略。</translation>
</message>
<message>
<location filename= "../Common/PolicyHelper.cpp" line= "113" />
<source> Cannot open version policy public key: %1. Error: %2.</source>
<translation> 无法打开版本策略公钥:%1。错误:%2。</translation>
</message>
<message>
<location filename= "../Common/PolicyHelper.cpp" line= "124" />
<source> Version policy public key is invalid: %1.</source>
<translation> 版本策略公钥无效:%1。</translation>
</message>
<message>
<location filename= "../Common/PolicyHelper.cpp" line= "137" />
<source> Version policy RSA signature is invalid. The policy file may have been changed, or the public key does not match the server private key.</source>
<translation> 版本策略 RSA 签名无效。策略文件可能被修改,或客户端公钥与服务端私钥不匹配。</translation>
</message>
<message>
<location filename= "../Common/PolicyHelper.cpp" line= "148" />
<source> Version policy has not been loaded.</source>
<translation> 版本策略尚未加载。</translation>
</message>
<message>
<location filename= "../Common/PolicyHelper.cpp" line= "155" />
<source> Version policy is missing required field: %1.</source>
<translation> 版本策略缺少必填字段:%1。</translation>
</message>
<message>
<location filename= "../Common/PolicyHelper.cpp" line= "163" />
<source> Version policy signature algorithm is unsupported: %1.</source>
<translation> 版本策略签名算法不支持:%1。</translation>
</message>
</context>
<context>
<name> TicketHelper</name>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "33" />
<source> Cannot create launch ticket because required fields are empty: %1. Check app_config.json, registry-imported configuration and device authorization.</source>
<translation> 无法创建启动 ticket,因为必填字段为空:%1。请检查 app_config.json、已导入注册表的配置和设备授权状态。</translation>
</message>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "52" />
<source> Cannot create launch ticket directory: %1.</source>
<translation> 无法创建启动 ticket 目录:%1。</translation>
</message>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "64" />
<source> Cannot save launch ticket file: %1. Error: %2.</source>
<translation> 无法保存启动 ticket 文件:%1。错误:%2。</translation>
</message>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "86" />
<source> Launch ticket is missing or has already been consumed. Ticket file: %1. Please start the application from Launcher.</source>
<translation> 启动 ticket 缺失或已经被消费。Ticket 文件:%1。请从 Launcher 启动主程序。</translation>
</message>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "97" />
<source> Cannot read claimed launch ticket: %1. Error: %2.</source>
<translation> 无法读取已声明占用的启动 ticket:%1。错误:%2。</translation>
</message>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "110" />
<source> Launch ticket is not valid JSON. JSON error: %1.</source>
<translation> 启动 ticket 不是合法 JSON。JSON 错误:%1。</translation>
</message>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "128" />
<source> Launch ticket signature is invalid. The launch_token used by Launcher and the main application is inconsistent, or the ticket content was changed.</source>
<translation> 启动 ticket 签名无效。Launcher 和主程序使用的 launch_token 不一致,或 ticket 内容被修改过。</translation>
</message>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "136" />
<source> Launch ticket app_id does not match. Ticket app_id: %1. Expected app_id: %2.</source>
<translation> 启动 ticket 的 app_id 不匹配。Ticket app_id: %1。期望 app_id: %2。</translation>
</message>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "145" />
<source> Launch ticket device_id does not match. Ticket device_id: %1. Expected device_id: %2. Reauthorize the device from Launcher if the configuration was regenerated.</source>
<translation> 启动 ticket 的 device_id 不匹配。Ticket device_id: %1。期望 device_id:%2。如果刚重新生成过配置,请通过 Launcher 重新授权设备。</translation>
</message>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "154" />
<source> Launch ticket version does not match. Ticket version: %1. Expected version: %2.</source>
<translation> 启动 ticket 的版本号不匹配。Ticket 版本:%1。期望版本:%2。</translation>
</message>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "163" />
<source> Launch ticket time is invalid or expired. Issued at: %1. Expires at: %2. Current UTC time: %3.</source>
<translation> 启动 ticket 时间无效或已过期。签发时间:%1。过期时间:%2。当前 UTC 时间:%3。</translation>
</message>
<message>
<location filename= "../Common/TicketHelper.cpp" line= "174" />
<source> Launch ticket nonce is missing. The ticket is incomplete.</source>
<translation> 启动 ticket 缺少 nonce。Ticket 内容不完整。</translation>
</message>
</context>
2026-07-20 06:43:46 +00:00
<context>
<name> UpdateLogic</name>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/UpdateLogic.cpp" line= "93" />
<source> Update configuration is incomplete. Server, product_code and current_version are required.</source>
<translation type= "unfinished" ></translation>
</message>
<message>
<location filename= "../Launcher/UpdateLogic.cpp" line= "174" />
<source> Current version manifest identity is incomplete. Stage: cache current version manifest. Product: %1, channel: %2, version: %3.</source>
<translation type= "unfinished" ></translation>
2026-07-21 03:02:42 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/UpdateLogic.cpp" line= "201" />
<source> Cannot download manifest for the current local version. Stage: cache current version manifest. HTTP status: %1. Product: %2, channel: %3, version: %4.%5</source>
<translation type= "unfinished" ></translation>
2026-07-21 03:02:42 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/UpdateLogic.cpp" line= "205" />
2026-07-21 03:02:42 +00:00
<source>
Server message: %1</source>
<translation>
服务端消息:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/UpdateLogic.cpp" line= "215" />
<source> The manifest response for the current local version is incomplete. Stage: cache current version manifest. Product: %1, channel: %2, version: %3.</source>
<translation type= "unfinished" ></translation>
2026-07-20 06:43:46 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/UpdateLogic.cpp" line= "226" />
<source> The manifest identity does not match the current local version. Stage: cache current version manifest. Expected product/channel/version: %1 / %2 / %3. Manifest product/channel/version: %4 / %5 / %6.</source>
<translation type= "unfinished" ></translation>
2026-07-20 06:43:46 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/UpdateLogic.cpp" line= "251" />
<source> Cannot save manifest cache. Stage: cache current version manifest. File: %1. Error: %2.</source>
<translation type= "unfinished" ></translation>
2026-07-20 06:43:46 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Launcher/UpdateLogic.cpp" line= "238" />
<source> Cannot create manifest cache directory. Stage: cache current version manifest. Directory: %1.</source>
<translation> 无法创建 Manifest 缓存目录。阶段:缓存当前版本 Manifest。目录:%1。</translation>
2026-07-20 06:43:46 +00:00
</message>
</context>
2026-07-14 01:37:06 +00:00
<context>
<name> Updater</name>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "47" />
2026-07-14 01:37:06 +00:00
<source> Invalid Offline Package</source>
<translation> 离线包无效</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "59" />
2026-07-14 01:37:06 +00:00
<source> Updater Argument Error</source>
<translation> 更新器参数错误</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "60" />
2026-07-14 01:37:06 +00:00
<source> The updater is missing online update arguments or an offline update package.</source>
<translation> 更新器缺少在线更新参数或离线更新包。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "88" />
2026-07-14 01:37:06 +00:00
<source> Offline Package Not Applicable</source>
<translation> 离线包不适用</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "89" />
2026-07-14 01:37:06 +00:00
<source> The update package application or channel does not match the local configuration.</source>
<translation> 更新包的应用或渠道与本机配置不一致。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "98" />
2026-07-14 01:37:06 +00:00
<source> Offline Update Rejected</source>
<translation> 离线更新被拒绝</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "99" />
2026-07-14 01:37:06 +00:00
<source> The local signed policy has expired, forbids offline updates, or does not allow the target version.</source>
<translation> 本地签名策略已过期、禁止离线更新或不允许目标版本。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "106" />
2026-07-14 01:37:06 +00:00
<source> Downgrade Forbidden</source>
<translation> 禁止降级</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "107" />
2026-07-14 01:37:06 +00:00
<source> The current signed policy does not allow installing an offline package with a lower version.</source>
<translation> 当前签名策略不允许安装较低版本的离线包。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "119" />
<location filename= "../Updater/main.cpp" line= "127" />
2026-07-14 01:37:06 +00:00
<source> Update Recovery Failed</source>
<translation> 更新恢复失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "120" />
2026-07-14 01:37:06 +00:00
<source> An unfinished update was detected, but the old version could not be restored: %1
Do not continue running the software. Please contact the administrator.</source>
<translation> 检测到上次更新未完成,但无法恢复旧版本:%1
请不要继续运行软件,并联系管理员。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "128" />
2026-07-14 01:37:06 +00:00
<source> The old files were restored, but the version state could not be restored. Please check write permissions for the configuration directory.</source>
<translation> 旧文件已经恢复,但无法恢复版本状态,请检查配置目录写入权限。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "135" />
2026-07-14 01:37:06 +00:00
<source> Preparing update...</source>
<translation> 正在准备更新...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "136" />
2026-07-14 01:37:06 +00:00
<source> Updating to %1</source>
<translation> 正在更新到 %1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "165" />
2026-07-14 01:37:06 +00:00
<source> Preparing download...</source>
<translation> 正在准备下载...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "166" />
2026-07-14 01:37:06 +00:00
<source> Downloading: %1</source>
<translation> 正在下载:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "188" />
2026-07-21 03:02:42 +00:00
<source>
Details:
%1</source>
<translation>
详细信息:
%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "208" />
2026-07-21 03:02:42 +00:00
<source> Cannot start the main application because the executable file does not exist.
Executable: %1
Check main_executable and install_root in the generated client configuration.</source>
<translation> 无法启动主程序,因为主程序文件不存在。
可执行文件:%1
请检查生成的客户端配置中的 main_executable 和 install_root。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "220" />
2026-07-21 03:02:42 +00:00
<source> Cannot start the main application because the one-time launch ticket could not be created.
Executable: %1
Details: %2</source>
<translation> 无法启动主程序,因为一次性启动 ticket 创建失败。
可执行文件:%1
详细信息:%2</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "231" />
2026-07-21 03:02:42 +00:00
<source> Cannot start the main application process.
Executable: %1
Ticket file: %2
Health file: %3
Check file permissions, dependent DLLs/shared libraries, and whether the executable can run independently.</source>
<translation> 无法启动主程序进程。
可执行文件:%1
Ticket 文件:%2
健康检查文件:%3
请检查文件权限、依赖 DLL/共享库,以及该可执行文件是否能独立运行。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "234" />
2026-07-21 03:02:42 +00:00
<source> < not used> </source>
<translation> < 未使用> </translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "252" />
2026-07-14 01:37:06 +00:00
<source> Delegating rollback to Bootstrap...</source>
<translation> 正在将回滚工作移交给 Bootstrap...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "261" />
2026-07-14 01:37:06 +00:00
<source>
Cannot start Bootstrap to perform rollback. Do not continue running the software. Please contact the administrator.</source>
<translation>
无法启动 Bootstrap 执行回滚。请不要继续运行软件,并联系管理员。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "271" />
2026-07-14 01:37:06 +00:00
<source> Transaction Resume Failed</source>
<translation> 事务续办失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "272" />
2026-07-14 01:37:06 +00:00
<source> Cannot read the Bootstrap update transaction: %1</source>
<translation> 无法读取 Bootstrap 更新事务:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "285" />
2026-07-14 01:37:06 +00:00
<source> Update Rolled Back</source>
<translation> 更新已回滚</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "287" />
2026-07-14 01:37:06 +00:00
<source> The new version failed to install or start. The old version has been restored and started automatically.</source>
<translation> 新版本安装或启动失败,已自动恢复并启动旧版本。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "288" />
2026-07-14 01:37:06 +00:00
<source> The old files were restored, but the old version number could not be written back. Please check configuration directory permissions.</source>
<translation> 旧文件已经恢复,但旧版本号写回失败,请检查配置目录权限。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "295" />
2026-07-14 01:37:06 +00:00
<source> Automatic Rollback Failed</source>
<translation> 自动回滚失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "296" />
2026-07-14 01:37:06 +00:00
<source> Bootstrap could not fully restore the old version. Do not continue running the software. Please contact the administrator.</source>
<translation> Bootstrap 无法完整恢复旧版本。请不要继续运行软件,并联系管理员。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "300" />
<location filename= "../Updater/main.cpp" line= "306" />
2026-07-14 01:37:06 +00:00
<source> Update Preparation Failed</source>
<translation> 更新准备失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "301" />
2026-07-14 01:37:06 +00:00
<source> Cannot create the update transaction directory or save the transaction state.</source>
<translation> 无法创建更新事务目录或保存事务状态。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "307" />
2026-07-14 01:37:06 +00:00
<source> Cannot save the offline transaction marker.</source>
<translation> 无法保存离线事务标记。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "313" />
2026-07-14 01:37:06 +00:00
<source> Fetching and verifying version manifest...</source>
<translation> 正在获取并验证版本清单...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "314" />
2026-07-14 01:37:06 +00:00
<source> Verifying offline update package...</source>
<translation> 正在验证离线更新包...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "318" />
<location filename= "../Updater/main.cpp" line= "348" />
<location filename= "../Updater/main.cpp" line= "351" />
2026-07-14 01:37:06 +00:00
<source> Manifest Cache Failed</source>
<translation> 清单缓存失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "319" />
2026-07-14 01:37:06 +00:00
<source> Cannot read the signed manifest cache after Bootstrap installation.</source>
<translation> Bootstrap 安装后无法读取签名 Manifest 缓存。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "326" />
<location filename= "../Updater/main.cpp" line= "329" />
2026-07-14 01:37:06 +00:00
<source> Security Verification Failed</source>
<translation> 安全验证失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "327" />
2026-07-14 01:37:06 +00:00
<source> Cannot reverify the manifest signature after Bootstrap installation.</source>
<translation> Bootstrap 安装后无法重新验证版本清单签名。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "330" />
2026-07-14 01:37:06 +00:00
<source> The version manifest signature is invalid. The update has stopped. Please contact the administrator.</source>
<translation> 版本清单签名无效,更新已停止。请联系管理员。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "349" />
2026-07-14 01:37:06 +00:00
<source> Cannot save the new version manifest cache.</source>
<translation> 无法保存新版本 Manifest 缓存。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "352" />
2026-07-14 01:37:06 +00:00
<source> Cannot save the new version manifest cache. The update has stopped.</source>
<translation> 无法保存新版本 Manifest 缓存,更新已停止。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "360" />
2026-07-14 01:37:06 +00:00
<source> Fetching secure download URLs...</source>
<translation> 正在获取安全下载地址...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "361" />
2026-07-14 01:37:06 +00:00
<source> Preparing offline package files...</source>
<translation> 正在准备离线包文件...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "365" />
2026-07-14 01:37:06 +00:00
<source> No Files to Update</source>
<translation> 没有可更新文件</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "366" />
2026-07-14 01:37:06 +00:00
<source> The server did not return any version files. The update has stopped.</source>
<translation> 服务器没有返回任何版本文件,更新已停止。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "375" />
2026-07-14 01:37:06 +00:00
<source> Insufficient Disk Space</source>
<translation> 磁盘空间不足</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "376" />
2026-07-14 01:37:06 +00:00
<source> The update requires at least %1 of free space, but the installation drive currently has only %2.
The required space includes downloaded files, old version backups, and a safety margin.</source>
<translation> 更新至少需要 %1 可用空间,安装盘当前仅剩 %2。
所需空间已包含下载文件、旧版本备份和安全余量。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "385" />
2026-07-14 01:37:06 +00:00
<source> Downloading and verifying %1 version files...</source>
<translation> 正在下载并校验 %1 个版本文件...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "386" />
2026-07-14 01:37:06 +00:00
<source> Extracting and verifying %1 offline files...</source>
<translation> 正在提取并校验 %1 个离线文件...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "389" />
2026-07-14 01:37:06 +00:00
<source> Offline Package Extraction Failed</source>
<translation> 离线包提取失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "395" />
2026-07-14 01:37:06 +00:00
<source> Download Failed</source>
<translation> 下载失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "396" />
2026-07-21 03:02:42 +00:00
<source> Some files failed to download or failed SHA-256 verification. Please check the network, update cache, or server release files and try again.</source>
<translation> 部分文件下载失败或 SHA-256 校验失败。请检查网络、更新缓存或服务端发布文件后重试。</translation>
2026-07-14 01:37:06 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "406" />
2026-07-21 03:02:42 +00:00
<source> The downloaded/staged files do not match the target version manifest. The update has stopped before replacing installed files.</source>
<translation> 已下载/暂存的文件与目标版本 Manifest 不一致。更新已在替换已安装文件前停止。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "486" />
2026-07-21 03:02:42 +00:00
<source> New version files failed verification after installation. The updater will roll back to the previous version.</source>
<translation> 新版本文件在安装后校验失败。更新器将回滚到上一版本。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "403" />
2026-07-14 01:37:06 +00:00
<source> Verifying complete version files...</source>
<translation> 正在校验完整版本文件...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "405" />
2026-07-14 01:37:06 +00:00
<source> File Verification Failed</source>
<translation> 文件校验失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "420" />
2026-07-14 01:37:06 +00:00
<source> Bootstrap Cannot Self-Update</source>
<translation> Bootstrap 无法自更新</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "421" />
2026-07-14 01:37:06 +00:00
<source> This version contains a new %1. Please upgrade this component with the installer, then publish the business version again.</source>
<translation> 本次版本包含新的 %1。请使用安装包升级该组件,再重新发布业务版本。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "426" />
2026-07-14 01:37:06 +00:00
<source> Transaction Recording Failed</source>
<translation> 事务记录失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "427" />
2026-07-14 01:37:06 +00:00
<source> Cannot save the list of verified or pending deletion files. The update has stopped.</source>
<translation> 无法保存已校验或待删除文件列表,更新已停止。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "430" />
2026-07-14 01:37:06 +00:00
<source> Closing the main application...</source>
<translation> 正在关闭主程序...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "432" />
2026-07-14 01:37:06 +00:00
<source> Cannot Close Main Application</source>
<translation> 无法关闭主程序</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "433" />
2026-07-14 01:37:06 +00:00
<source> %1 is still running. Please close it manually and try again.</source>
<translation> %1 仍在运行,请手动关闭后重试。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "436" />
2026-07-14 01:37:06 +00:00
<source> Backing up %1 files to be changed, including %2 files to be deleted...</source>
<translation> 正在备份 %1 个待变更文件(其中删除 %2 个)...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "439" />
2026-07-14 01:37:06 +00:00
<source> Backup Failed</source>
<translation> 备份失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "440" />
2026-07-14 01:37:06 +00:00
<source> Cannot back up current version files. The new version has not been installed. Please check disk space and directory permissions.</source>
<translation> 无法备份当前版本文件,尚未安装新版本。请检查磁盘空间和目录权限。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "446" />
<location filename= "../Updater/main.cpp" line= "456" />
<location filename= "../Updater/main.cpp" line= "464" />
<location filename= "../Updater/main.cpp" line= "470" />
2026-07-14 01:37:06 +00:00
<source> Bootstrap Handoff Preparation Failed</source>
<translation> 接管准备失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "447" />
2026-07-14 01:37:06 +00:00
<source> Cannot create the Bootstrap file plan.</source>
<translation> 无法创建 Bootstrap 文件计划。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "457" />
2026-07-14 01:37:06 +00:00
<source> Cannot write the Bootstrap copy plan.</source>
<translation> 无法写入 Bootstrap 复制计划。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "465" />
2026-07-14 01:37:06 +00:00
<source> Cannot write the Bootstrap deletion plan.</source>
<translation> 无法写入 Bootstrap 删除计划。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "471" />
2026-07-14 01:37:06 +00:00
<source> Cannot commit the Bootstrap file plan or transaction state.</source>
<translation> 无法提交 Bootstrap 文件计划或事务状态。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "474" />
2026-07-14 01:37:06 +00:00
<source> Delegating installation to Bootstrap...</source>
<translation> 正在将安装工作移交给 Bootstrap...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "476" />
2026-07-14 01:37:06 +00:00
<source> Bootstrap Startup Failed</source>
<translation> Bootstrap 启动失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "477" />
2026-07-14 01:37:06 +00:00
<source> Cannot start the standalone update handoff program: %1</source>
<translation> 无法启动独立更新接管程序:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "483" />
2026-07-14 01:37:06 +00:00
<source> Verifying Bootstrap installation result...</source>
<translation> 正在校验 Bootstrap 安装结果...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "485" />
2026-07-14 01:37:06 +00:00
<source> Installation Verification Failed</source>
<translation> 安装校验失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "490" />
2026-07-14 01:37:06 +00:00
<source> Obsolete File Cleanup Failed</source>
<translation> 废弃文件清理失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "491" />
2026-07-14 01:37:06 +00:00
<source> An obsolete file still exists: %1</source>
<translation> 废弃文件仍然存在:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "494" />
2026-07-14 01:37:06 +00:00
<source> Saving new version state...</source>
<translation> 正在保存新版本状态...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "497" />
2026-07-14 01:37:06 +00:00
<source> State Save Failed</source>
<translation> 状态保存失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "498" />
2026-07-14 01:37:06 +00:00
<source> Cannot save the current version number.</source>
<translation> 无法保存当前版本号。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "502" />
2026-07-14 01:37:06 +00:00
<source> Starting the new version and waiting for health confirmation...</source>
<translation> 正在启动新版本并等待健康确认...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "504" />
2026-07-14 01:37:06 +00:00
<source> Startup Failed</source>
<translation> 启动失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "506" />
2026-07-14 01:37:06 +00:00
<source> %1 cannot be started.</source>
<translation> %1 无法启动。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "516" />
2026-07-14 01:37:06 +00:00
<source> Startup Confirmation Failed</source>
<translation> 启动确认失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "517" />
2026-07-14 01:37:06 +00:00
<source> The new version did not complete startup health confirmation within %1 milliseconds.</source>
<translation> 新版本在 %1 毫秒内没有完成启动健康确认。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "520" />
2026-07-14 01:37:06 +00:00
<source> Committing update transaction...</source>
<translation> 正在提交更新事务...</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "522" />
2026-07-14 01:37:06 +00:00
<source> Transaction Commit Failed</source>
<translation> 事务提交失败</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "523" />
2026-07-14 01:37:06 +00:00
<source> The new version has started, but the update transaction could not be committed.</source>
<translation> 新版本已经启动,但无法提交更新事务。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "531" />
2026-07-14 01:37:06 +00:00
<source> Update Complete</source>
<translation> 更新完成</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/main.cpp" line= "532" />
2026-07-14 01:37:06 +00:00
<source> The software has been successfully updated to %1 and passed the startup health check.</source>
<translation> 软件已成功更新到 %1,并通过启动健康检查。</translation>
</message>
</context>
<context>
<name> UpdaterLogic</name>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "196" />
2026-07-21 03:02:42 +00:00
<source>
Server message: %1</source>
<translation>
服务端消息:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "209" />
2026-07-21 03:02:42 +00:00
<source> Cannot verify manifest signature because OpenSSL support is unavailable. Stage: manifest signature verification.</source>
<translation> 无法验证 Manifest 签名,因为当前程序未启用 OpenSSL。阶段:Manifest 签名校验。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "217" />
2026-07-21 03:02:42 +00:00
<source> Cannot open manifest public key. Stage: manifest signature verification. Public key path: %1.</source>
<translation> 无法打开 Manifest 公钥。阶段:Manifest 签名校验。公钥路径:%1。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "230" />
2026-07-21 03:02:42 +00:00
<source> Cannot parse manifest public key buffer. Stage: manifest signature verification. Public key path: %1.</source>
<translation> 无法解析 Manifest 公钥内容。阶段:Manifest 签名校验。公钥路径:%1。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "241" />
2026-07-21 03:02:42 +00:00
<source> Manifest public key is invalid. Stage: manifest signature verification. Public key path: %1.</source>
<translation> Manifest 公钥无效。阶段:Manifest 签名校验。公钥路径:%1。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "253" />
2026-07-21 03:02:42 +00:00
<source> Cannot create OpenSSL verification context. Stage: manifest signature verification.</source>
<translation> 无法创建 OpenSSL 验签上下文。阶段:Manifest 签名校验。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "276" />
2026-07-21 03:02:42 +00:00
<source> Manifest RSA signature is invalid. Stage: manifest signature verification. This usually means the manifest was not signed by the matching server private key, the client public key is wrong, or the manifest content was changed.</source>
<translation> Manifest RSA 签名无效。阶段:Manifest 签名校验。通常表示 Manifest 不是由匹配的服务端私钥签名、客户端公钥不正确,或 Manifest 内容被修改过。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "290" />
2026-07-21 03:02:42 +00:00
<source> No manifest is available for signature verification. Stage: manifest signature verification. The target manifest may not have been downloaded successfully.</source>
<translation> 没有可用于验签的 Manifest。阶段:Manifest 签名校验。目标版本 Manifest 可能没有下载成功。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "184" />
<source> Target version manifest response is incomplete. Stage: download target manifest. Product: %1, channel: %2, version: %3, release id: %4.</source>
<translation type= "unfinished" ></translation>
</message>
<message>
<location filename= "../Updater/UpdaterLogic.cpp" line= "193" />
<source> Cannot download target version manifest. Stage: download target manifest. HTTP status: %1. Product: %2, channel: %3, version: %4, release id: %5.%6</source>
<translation type= "unfinished" ></translation>
2026-07-21 03:02:42 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "298" />
<source> Manifest SHA-256 does not match the server envelope. Stage: manifest digest verification.
Expected SHA-256: %1
Actual SHA-256: %2</source>
<translation type= "unfinished" ></translation>
</message>
<message>
<location filename= "../Updater/UpdaterLogic.cpp" line= "311" />
<source> The manifest does not contain a signature, but require_manifest_signature is enabled. Stage: manifest signature verification.</source>
<translation type= "unfinished" ></translation>
</message>
<message>
<location filename= "../Updater/UpdaterLogic.cpp" line= "333" />
2026-07-21 03:02:42 +00:00
<source> Cannot save manifest cache because the target manifest is empty. Stage: save target manifest cache.</source>
<translation> 无法保存 Manifest 缓存,因为目标版本 Manifest 为空。阶段:保存目标版本 Manifest 缓存。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "340" />
2026-07-21 03:02:42 +00:00
<source> Cannot create manifest cache directory. Stage: save target manifest cache. Directory: %1.</source>
<translation> 无法创建 Manifest 缓存目录。阶段:保存目标版本 Manifest 缓存。目录:%1。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "350" />
2026-07-21 03:02:42 +00:00
<source> Cannot write manifest cache file. Stage: save target manifest cache. File: %1. Error: %2.</source>
<translation> 无法写入 Manifest 缓存文件。阶段:保存目标版本 Manifest 缓存。文件:%1。错误:%2。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "380" />
2026-07-21 03:02:42 +00:00
<source> Cannot read cached signed manifest. Stage: read local manifest cache. Version: %1. File: %2. This cache is created after a version is installed successfully.</source>
<translation> 无法读取本地签名 Manifest 缓存。阶段:读取本地 Manifest 缓存。版本:%1。文件:%2。该缓存会在版本安装成功后生成。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "390" />
2026-07-21 03:02:42 +00:00
<source> Cached signed manifest is not valid JSON. Stage: read local manifest cache. Version: %1. File: %2.</source>
<translation> 本地签名 Manifest 缓存不是合法 JSON。阶段:读取本地 Manifest 缓存。版本:%1。文件:%2。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "399" />
2026-07-21 03:02:42 +00:00
<source> Cached signed manifest is incomplete. Stage: read local manifest cache. Version: %1. File: %2.</source>
<translation> 本地签名 Manifest 缓存不完整。阶段:读取本地 Manifest 缓存。版本:%1。文件:%2。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "516" />
2026-07-21 03:02:42 +00:00
<source> installed version verification</source>
<translation> 已安装版本校验</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "517" />
2026-07-21 03:02:42 +00:00
<source> downloaded/staged file verification</source>
<translation> 已下载/暂存文件校验</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "520" />
2026-07-21 03:02:42 +00:00
<source> No manifest is available. Stage: %1. The updater cannot know which files and hashes should be verified.</source>
<translation> 没有可用的 Manifest。阶段:%1。Updater 无法知道应该校验哪些文件和哈希。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "533" />
2026-07-21 03:02:42 +00:00
<source> Manifest contains an unsafe file path. Stage: %1. Version: %2. Path: %3.</source>
<translation> Manifest 包含不安全文件路径。阶段:%1。版本:%2。路径:%3。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "550" />
2026-07-21 03:02:42 +00:00
<source> A required file is missing. Stage: %1. Version: %2. Manifest path: %3. Checked path: %4. If this is a downloaded update, the file was not downloaded or staged correctly; if this is startup verification, the installed file may have been deleted.</source>
<translation> 缺少必需文件。阶段:%1。版本:%2。Manifest 路径:%3。检查路径:%4。如果这是下载更新阶段,说明文件没有正确下载或暂存;如果这是启动校验阶段,说明已安装文件可能被删除。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "558" />
<source> File size does not match the signed manifest. Stage: %1. Version: %2. Manifest path: %3. Local path: %4.
Expected size: %5 bytes
Actual size: %6 bytes</source>
<translation type= "unfinished" ></translation>
</message>
<message>
<location filename= "../Updater/UpdaterLogic.cpp" line= "568" />
2026-07-21 03:02:42 +00:00
<source> File SHA-256 does not match the signed manifest. Stage: %1. Version: %2. Manifest path: %3. Local path: %4.
Expected SHA-256: %5
Actual SHA-256: %6
If this happens during download, clear the update cache and retry. If this happens during startup or after installation, the local file differs from the published version.</source>
<translation> 文件 SHA-256 与签名 Manifest 不一致。阶段:%1。版本:%2。Manifest 路径:%3。本地路径:%4。
期望 SHA-256: %5
实际 SHA-256: %6
如果发生在下载阶段,请清理更新缓存后重试。如果发生在启动或安装后校验阶段,说明本地文件与发布版本不同。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "570" />
<location filename= "../Updater/UpdaterLogic.cpp" line= "803" />
2026-07-21 03:02:42 +00:00
<source> < cannot read file> </source>
<translation> < 无法读取文件> </translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "583" />
2026-07-14 01:37:06 +00:00
<source> Cannot open the offline update package</source>
<translation> 无法打开离线更新包</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "584" />
2026-07-14 01:37:06 +00:00
<source> The offline package format identifier is invalid</source>
<translation> 离线包格式标识无效</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "586" />
2026-07-14 01:37:06 +00:00
<source> The offline package header is incomplete</source>
<translation> 离线包头不完整</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "589" />
2026-07-14 01:37:06 +00:00
<source> The offline package header length is invalid</source>
<translation> 离线包头长度无效</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "592" />
2026-07-14 01:37:06 +00:00
<source> The offline package header JSON is invalid</source>
<translation> 离线包头 JSON 无效</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "597" />
2026-07-14 01:37:06 +00:00
<source> The offline package RSA signature is invalid</source>
<translation> 离线包 RSA 签名无效</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "599" />
2026-07-14 01:37:06 +00:00
<source> The offline package signature metadata is invalid</source>
<translation> 离线包签名元数据无效</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "600" />
2026-07-14 01:37:06 +00:00
<source> The manifest digest does not match the package signature</source>
<translation> Manifest 摘要与包签名不一致</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "602" />
2026-07-14 01:37:06 +00:00
<source> The offline manifest is invalid</source>
<translation> 离线 Manifest 无效</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "612" />
2026-07-14 01:37:06 +00:00
<source> Package information does not match manifest identity</source>
<translation> 包信息与 Manifest 身份不一致</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "613" />
2026-07-14 01:37:06 +00:00
<source> The offline manifest RSA signature is invalid</source>
<translation> 离线 Manifest RSA 签名无效</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "619" />
2026-07-14 01:37:06 +00:00
<source> The offline package contains an unsafe path or out-of-range data: %1</source>
<translation> 离线包包含不安全路径或越界数据:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "622" />
2026-07-14 01:37:06 +00:00
<source> Cannot prepare offline file: %1</source>
<translation> 无法准备离线文件:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "623" />
2026-07-14 01:37:06 +00:00
<source> Cannot create staged file: %1</source>
<translation> 无法创建暂存文件:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "625" />
2026-07-14 01:37:06 +00:00
<source> Failed to read offline file: %1</source>
<translation> 离线文件读取失败:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "626" />
2026-07-14 01:37:06 +00:00
<source> Offline file hash verification or write failed: %1</source>
<translation> 离线文件 Hash 或写入失败:%1</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "628" />
2026-07-14 01:37:06 +00:00
<source> The offline package file count does not match the manifest</source>
<translation> 离线包文件数量与 Manifest 不一致</translation>
</message>
2026-07-21 03:02:42 +00:00
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "640" />
<source> The manifest does not contain any downloadable package URL. Stage: prepare authorized downloads.</source>
<translation type= "unfinished" ></translation>
2026-07-21 03:02:42 +00:00
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "671" />
2026-07-21 03:02:42 +00:00
<source> Cannot create partial download directory. Stage: download file. File: %1. Partial file: %2.</source>
<translation> 无法创建断点续传目录。阶段:下载文件。文件:%1。临时分片文件:%2。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "700" />
<location filename= "../Updater/UpdaterLogic.cpp" line= "791" />
2026-07-21 03:02:42 +00:00
<source> Downloaded file passed SHA-256 verification, but cannot move it into the staging directory. Stage: download file. File: %1. From: %2. To: %3.</source>
<translation> 下载文件已通过 SHA-256 校验,但无法移动到暂存目录。阶段:下载文件。文件:%1。从:%2。到:%3。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "706" />
2026-07-21 03:02:42 +00:00
<source> Cached partial file has the expected size but wrong SHA-256. Stage: resume download. File: %1.
Expected SHA-256: %2
Actual SHA-256: %3
The partial cache will be deleted and downloaded again.</source>
<translation> 缓存的断点续传文件大小正确,但 SHA-256 不一致。阶段:断点续传。文件:%1。
期望 SHA-256: %2
实际 SHA-256: %3
该临时缓存会被删除并重新下载。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "719" />
2026-07-21 03:02:42 +00:00
<source> Cannot open partial download file. Stage: download file. File: %1. Partial file: %2. Error: %3.</source>
<translation> 无法打开断点续传临时文件。阶段:下载文件。文件:%1。临时分片文件:%2。错误:%3。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "800" />
2026-07-21 03:02:42 +00:00
<source> Downloaded file does not match the signed manifest. Stage: download file. File: %1. HTTP status: %2.
Expected size: %3 bytes
Actual size: %4 bytes
Expected SHA-256: %5
Actual SHA-256: %6
The partial cache will be deleted and downloaded again.</source>
<translation> 下载文件与签名 Manifest 不一致。阶段:下载文件。文件:%1。HTTP 状态码:%2。
期望大小:%3 字节
实际大小:%4 字节
期望 SHA-256: %5
实际 SHA-256: %6
该临时缓存会被删除并重新下载。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "807" />
2026-07-21 03:02:42 +00:00
<source> Downloaded file is incomplete. Stage: download file. File: %1. HTTP status: %2. Expected size: %3 bytes, current size: %4 bytes.</source>
<translation> 下载文件不完整。阶段:下载文件。文件:%1。HTTP 状态码:%2。期望大小:%3 字节,当前大小:%4 字节。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "816" />
2026-07-21 03:02:42 +00:00
<source> Download request failed. Stage: download file. File: %1. Attempt: %2/4. HTTP status: %3. Network error: %4. Partial file: %5.</source>
<translation> 下载请求失败。阶段:下载文件。文件:%1。尝试次数:%2/4。HTTP 状态码:%3。网络错误:%4。临时分片文件:%5。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "834" />
2026-07-21 03:02:42 +00:00
<source> File download failed after retries. Stage: download file. File: %1.</source>
<translation> 文件多次重试后仍下载失败。阶段:下载文件。文件:%1。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "909" />
2026-07-21 03:02:42 +00:00
<source> The target version manifest contains no downloadable files. Stage: prepare downloads.</source>
<translation> 目标版本 Manifest 中没有可下载文件。阶段:准备下载。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "916" />
2026-07-21 03:02:42 +00:00
<source> Cannot create update staging directory. Stage: prepare downloads. Directory: %1.</source>
<translation> 无法创建更新暂存目录。阶段:准备下载。目录:%1。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "923" />
2026-07-21 03:02:42 +00:00
<source> Cannot create download cache directory. Stage: prepare downloads. Directory: %1.</source>
<translation> 无法创建下载缓存目录。阶段:准备下载。目录:%1。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "957" />
2026-07-21 03:02:42 +00:00
<source> Manifest contains an unsafe file path. Stage: prepare file download. Path: %1.</source>
<translation> Manifest 包含不安全文件路径。阶段:准备文件下载。路径:%1。</translation>
</message>
<message>
2026-09-08 17:08:58 +08:00
<location filename= "../Updater/UpdaterLogic.cpp" line= "982" />
2026-07-21 03:02:42 +00:00
<source> Cannot create staging subdirectory. Stage: prepare file download. File: %1. Directory: %2.</source>
<translation> 无法创建暂存子目录。阶段:准备文件下载。文件:%1。目录:%2。</translation>
</message>
2026-07-14 01:37:06 +00:00
</context>
</TS>