Files
update-client/i18n/update-client_zh_CN.ts
T

1033 lines
46 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<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>
<context>
<name>ConfigHelper</name>
<message>
<location filename="../Common/ConfigHelper.cpp" line="219"/>
<source>The user canceled the administrator permission confirmation.</source>
<translation>用户取消了管理员权限确认。</translation>
</message>
<message>
<location filename="../Common/ConfigHelper.cpp" line="220"/>
<source>Windows error %1</source>
<translation>Windows 错误 %1</translation>
</message>
<message>
<location filename="../Common/ConfigHelper.cpp" line="230"/>
<source>Administrator Permission Required</source>
<translation>需要管理员权限</translation>
</message>
<message>
<location filename="../Common/ConfigHelper.cpp" line="231"/>
<source>The current installation directory requires administrator permission to save configuration.
Target file: %1
Reason: %2
Click OK, then choose Yes in the Windows permission confirmation dialog.</source>
<translation>当前安装目录需要管理员权限才能保存配置。
目标文件:%1
原因:%2
点击“确定”后,请在 Windows 权限确认窗口中选择“是”。</translation>
</message>
<message>
<location filename="../Common/ConfigHelper.cpp" line="238"/>
<source>The user canceled the administrator permission request.</source>
<translation>用户取消了管理员权限请求。</translation>
</message>
</context>
<context>
<name>DeviceIdentityHelper</name>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="54"/>
<source>OpenSSL is unavailable, so device credential signature cannot be verified.</source>
<translation>当前程序未启用 OpenSSL,无法验证设备凭证签名。</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="62"/>
<source>Device public key is missing: %1</source>
<translation>设备凭证公钥缺失:%1</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="73"/>
<source>Device public key is invalid: %1</source>
<translation>设备凭证公钥无效:%1</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="93"/>
<source>Device credential signature is invalid. The local identity file may not match this server.</source>
<translation>设备凭证签名无效。本机身份文件可能不是当前服务器签发的。</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="118"/>
<source>Device credential file is not valid JSON: %1</source>
<translation>设备凭证文件不是合法 JSON%1</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="142"/>
<source>Device credential does not match this application, channel, license, installation or device.</source>
<translation>设备凭证与当前应用、渠道、License、安装实例或设备不匹配。</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="149"/>
<source>License has expired. Please ask the administrator to issue a new License.</source>
<translation>License 已过期。请联系管理员重新签发 License。</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="182"/>
<source>app_id is empty in app_config.json.</source>
<translation>app_config.json 中的 app_id 为空。</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="186"/>
<source>channel is empty in app_config.json.</source>
<translation>app_config.json 中的 channel 为空。</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="190"/>
<source>Server address is not configured. Set config/server_config.json before building Launcher, for example: http://192.168.229.128:8000</source>
<translation>服务端地址未配置。请先设置 config/server_config.json,再重新编译 Launcher。例如:http://192.168.229.128:8000</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="196"/>
<source>client_token is empty. Copy the client_token generated by the admin page into app_config.json.</source>
<translation>client_token 为空。请把管理后台生成的 client_token 复制到 app_config.json。</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="202"/>
<source>License is empty. Create or select a License in the admin page, then copy the generated client configuration.</source>
<translation>License 为空。请先在管理后台创建或选择 License,然后复制生成的客户端配置。</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="213"/>
<source>Cannot save installation id to %1: %2</source>
<translation>无法保存安装实例 ID 到 %1%2</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="263"/>
<source>Device identity request failed (HTTP %1): %2</source>
<translation>设备身份申请失败(HTTP %1):%2</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="273"/>
<source>Server returned an invalid device identity response.</source>
<translation>服务端返回的设备身份响应格式无效。</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="288"/>
<source>Cannot save device credential to %1: %2</source>
<translation>无法保存设备凭证到 %1%2</translation>
</message>
<message>
<location filename="../Common/DeviceIdentityHelper.cpp" line="296"/>
<source>Cannot save server device id to %1: %2</source>
<translation>无法保存服务端设备 ID 到 %1:%2</translation>
</message>
</context>
<context>
<name>Launcher</name>
<message>
<location filename="../Launcher/main.cpp" line="32"/>
<source>Checking for software updates...</source>
<translation>正在检查软件更新...</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="33"/>
<source>Marsco Launcher</source>
<translation>Marsco 软件启动器</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="63"/>
<source>Please enter the License for %1:</source>
<translation>请输入 %1 的授权 License</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="64"/>
<location filename="../Launcher/main.cpp" line="66"/>
<source>the application</source>
<translation>软件</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="65"/>
<source>%1
Please enter a new License for %2:</source>
<translation>%1
请重新输入 %2 的授权 License:</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="69"/>
<source>Enter License</source>
<translation>输入 License</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="77"/>
<source>License Required</source>
<translation>需要 License</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="78"/>
<source>A License provided by the administrator is required for the first launch.</source>
<translation>首次启动需要输入管理员提供的 License。</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="83"/>
<source>License Cannot Be Empty</source>
<translation>License 不能为空</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="84"/>
<source>Please paste the License created in the admin page.</source>
<translation>请粘贴管理员在后台创建的 License。</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="90"/>
<source>Failed to Save License</source>
<translation>保存 License 失败</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="91"/>
<source>Cannot write the configuration file:
%1
%2</source>
<translation>无法写入配置文件:
%1
%2</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="95"/>
<source>Verifying License...</source>
<translation>正在验证 License...</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="120"/>
<source>Device Authentication Failed</source>
<translation>设备身份验证失败</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="125"/>
<source>The current License cannot be used: %1</source>
<translation>当前 License 无法使用:%1</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="147"/>
<source>The device or License authorization is invalid.</source>
<translation>设备或 License 授权无效。</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="151"/>
<source>The current authorization was rejected by the server: %1</source>
<translation>当前授权被服务端拒绝:%1</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="155"/>
<source>License Saved</source>
<translation>License 已保存</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="156"/>
<source>Please restart Launcher to complete device authorization and update checking.</source>
<translation>请重新启动 Launcher 完成设备授权和更新检查。</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="161"/>
<source>Authorization Rejected</source>
<translation>授权被拒绝</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="176"/>
<source>Select Offline Update Package</source>
<translation>选择离线更新包</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="178"/>
<source>Marsco offline update package (*.upd)</source>
<translation>Marsco 离线更新包 (*.upd)</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="186"/>
<location filename="../Launcher/main.cpp" line="340"/>
<source>Offline Update</source>
<translation>离线更新</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="187"/>
<source>No offline update package was selected.</source>
<translation>未选择离线更新包。</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="207"/>
<source>Verifying local runtime policy...</source>
<translation>正在验证本地运行策略...</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="215"/>
<location filename="../Launcher/main.cpp" line="223"/>
<location filename="../Launcher/main.cpp" line="242"/>
<source>Cannot Start</source>
<translation>无法启动</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="216"/>
<source>The local version policy is invalid: %1</source>
<translation>本地版本策略无效:%1</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="224"/>
<source>The local version policy has expired. Please connect to the network or contact the administrator.</source>
<translation>本地版本策略已过期,请连接网络或联系管理员。</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="231"/>
<source>Current Version Cannot Run</source>
<translation>当前版本不可运行</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="232"/>
<source>The current version %1 has been disabled by the administrator.</source>
<translation>当前版本 %1 已被管理员停用。</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="243"/>
<source>Cannot read the local state: %1</source>
<translation>无法读取本地状态:%1</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="250"/>
<location filename="../Launcher/main.cpp" line="258"/>
<source>Security Check Failed</source>
<translation>安全检查失败</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="251"/>
<source>A version policy sequence rollback was detected. Startup has been blocked.</source>
<translation>检测到版本策略序列回退,已阻止启动。</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="259"/>
<source>A possible system time rollback was detected. Startup has been blocked.</source>
<translation>检测到系统时间可能被回拨,已阻止启动。</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="265"/>
<source>Generating Git tag list...</source>
<translation>正在生成 Git 标签清单...</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="272"/>
<source>Git Tag List Failed</source>
<translation>Git 标签清单生成失败</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="273"/>
<source>Cannot generate tags.txt, but startup will continue:
%1</source>
<translation>无法生成 tags.txt,但启动会继续:
%1</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="283"/>
<source>Version Rollback</source>
<translation>版本回退</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="284"/>
<source>Update Required</source>
<translation>必须更新</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="284"/>
<source>New Version Available</source>
<translation>发现新版本</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="287"/>
<source>The administrator provided version %1 as the rollback target. Downgrade now?</source>
<translation>管理员提供了版本 %1 作为回退目标,是否现在降级?</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="288"/>
<source>Version %1 is available. Update now?</source>
<translation>发现新版本 %1,是否现在更新?</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="289"/>
<source>
Target version: %1</source>
<translation>
目标版本:%1</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="300"/>
<location filename="../Launcher/main.cpp" line="364"/>
<source>Startup Failed</source>
<translation>启动失败</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="301"/>
<location filename="../Launcher/main.cpp" line="365"/>
<source>Cannot start the main application: %1</source>
<translation>无法启动主程序:%1</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="310"/>
<source>Updater Startup Failed</source>
<translation>更新器启动失败</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="311"/>
<source>Cannot start the updater: %1</source>
<translation>无法启动更新器:%1</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="319"/>
<source>Caching signed version manifest...</source>
<translation>正在缓存签名版本清单...</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="326"/>
<source>Manifest Cache Failed</source>
<translation>清单缓存失败</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="327"/>
<source>Cannot cache the signed manifest for the current version: %1</source>
<translation>无法缓存当前版本的签名清单:%1</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="335"/>
<source>Server Unavailable</source>
<translation>服务器不可用</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="336"/>
<source>Cannot connect to the update server. Import an offline update package?</source>
<translation>当前无法连接更新服务器。是否导入离线更新包?</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="341"/>
<source>No offline update package was selected, or the updater could not be started.</source>
<translation>未选择离线更新包或无法启动更新器。</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="351"/>
<source>Network Unavailable</source>
<translation>网络不可用</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="352"/>
<source>Cannot connect to the update server, and the current policy does not allow offline startup.</source>
<translation>无法连接更新服务器,且当前策略不允许离线启动。</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="357"/>
<source>The application is up to date. Starting...</source>
<translation>当前已是最新版本,正在启动...</translation>
</message>
<message>
<location filename="../Launcher/main.cpp" line="358"/>
<source>Offline mode is active. Starting...</source>
<translation>当前处于离线模式,正在启动...</translation>
</message>
</context>
<context>
<name>UpdateLogic</name>
<message>
<location filename="../Launcher/UpdateLogic.cpp" line="167"/>
<source>Server address is empty.</source>
<translation>服务端地址为空。</translation>
</message>
<message>
<location filename="../Launcher/UpdateLogic.cpp" line="188"/>
<source>Git tags request failed (HTTP %1).</source>
<translation>Git 标签请求失败(HTTP %1)。</translation>
</message>
<message>
<location filename="../Launcher/UpdateLogic.cpp" line="195"/>
<source>Git tags response is empty.</source>
<translation>Git 标签响应为空。</translation>
</message>
<message>
<location filename="../Launcher/UpdateLogic.cpp" line="201"/>
<source>Cannot write Git tags file: %1</source>
<translation>无法写入 Git 标签文件:%1</translation>
</message>
</context>
<context>
<name>Updater</name>
<message>
<location filename="../Updater/main.cpp" line="45"/>
<source>Invalid Offline Package</source>
<translation>离线包无效</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="57"/>
<source>Updater Argument Error</source>
<translation>更新器参数错误</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="58"/>
<source>The updater is missing online update arguments or an offline update package.</source>
<translation>更新器缺少在线更新参数或离线更新包。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="78"/>
<source>Offline Package Not Applicable</source>
<translation>离线包不适用</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="79"/>
<source>The update package application or channel does not match the local configuration.</source>
<translation>更新包的应用或渠道与本机配置不一致。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="88"/>
<source>Offline Update Rejected</source>
<translation>离线更新被拒绝</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="89"/>
<source>The local signed policy has expired, forbids offline updates, or does not allow the target version.</source>
<translation>本地签名策略已过期、禁止离线更新或不允许目标版本。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="96"/>
<source>Downgrade Forbidden</source>
<translation>禁止降级</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="97"/>
<source>The current signed policy does not allow installing an offline package with a lower version.</source>
<translation>当前签名策略不允许安装较低版本的离线包。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="109"/>
<location filename="../Updater/main.cpp" line="117"/>
<source>Update Recovery Failed</source>
<translation>更新恢复失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="110"/>
<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>
<location filename="../Updater/main.cpp" line="118"/>
<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>
<location filename="../Updater/main.cpp" line="125"/>
<source>Preparing update...</source>
<translation>正在准备更新...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="126"/>
<source>Updating to %1</source>
<translation>正在更新到 %1</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="155"/>
<source>Preparing download...</source>
<translation>正在准备下载...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="156"/>
<source>Downloading: %1</source>
<translation>正在下载:%1</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="218"/>
<source>Delegating rollback to Bootstrap...</source>
<translation>正在将回滚工作移交给 Bootstrap...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="227"/>
<source>
Cannot start Bootstrap to perform rollback. Do not continue running the software. Please contact the administrator.</source>
<translation>
无法启动 Bootstrap 执行回滚。请不要继续运行软件,并联系管理员。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="237"/>
<source>Transaction Resume Failed</source>
<translation>事务续办失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="238"/>
<source>Cannot read the Bootstrap update transaction: %1</source>
<translation>无法读取 Bootstrap 更新事务:%1</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="251"/>
<source>Update Rolled Back</source>
<translation>更新已回滚</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="253"/>
<source>The new version failed to install or start. The old version has been restored and started automatically.</source>
<translation>新版本安装或启动失败,已自动恢复并启动旧版本。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="254"/>
<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>
<location filename="../Updater/main.cpp" line="261"/>
<source>Automatic Rollback Failed</source>
<translation>自动回滚失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="262"/>
<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>
<location filename="../Updater/main.cpp" line="266"/>
<location filename="../Updater/main.cpp" line="272"/>
<source>Update Preparation Failed</source>
<translation>更新准备失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="267"/>
<source>Cannot create the update transaction directory or save the transaction state.</source>
<translation>无法创建更新事务目录或保存事务状态。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="273"/>
<source>Cannot save the offline transaction marker.</source>
<translation>无法保存离线事务标记。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="279"/>
<source>Fetching and verifying version manifest...</source>
<translation>正在获取并验证版本清单...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="280"/>
<source>Verifying offline update package...</source>
<translation>正在验证离线更新包...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="284"/>
<location filename="../Updater/main.cpp" line="311"/>
<location filename="../Updater/main.cpp" line="313"/>
<source>Manifest Cache Failed</source>
<translation>清单缓存失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="285"/>
<source>Cannot read the signed manifest cache after Bootstrap installation.</source>
<translation>Bootstrap 安装后无法读取签名 Manifest 缓存。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="291"/>
<location filename="../Updater/main.cpp" line="293"/>
<source>Security Verification Failed</source>
<translation>安全验证失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="292"/>
<source>Cannot reverify the manifest signature after Bootstrap installation.</source>
<translation>Bootstrap 安装后无法重新验证版本清单签名。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="294"/>
<source>The version manifest signature is invalid. The update has stopped. Please contact the administrator.</source>
<translation>版本清单签名无效,更新已停止。请联系管理员。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="312"/>
<source>Cannot save the new version manifest cache.</source>
<translation>无法保存新版本 Manifest 缓存。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="314"/>
<source>Cannot save the new version manifest cache. The update has stopped.</source>
<translation>无法保存新版本 Manifest 缓存,更新已停止。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="321"/>
<source>Fetching secure download URLs...</source>
<translation>正在获取安全下载地址...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="322"/>
<source>Preparing offline package files...</source>
<translation>正在准备离线包文件...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="326"/>
<source>No Files to Update</source>
<translation>没有可更新文件</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="327"/>
<source>The server did not return any version files. The update has stopped.</source>
<translation>服务器没有返回任何版本文件,更新已停止。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="335"/>
<source>Insufficient Disk Space</source>
<translation>磁盘空间不足</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="336"/>
<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>
<location filename="../Updater/main.cpp" line="345"/>
<source>Downloading and verifying %1 version files...</source>
<translation>正在下载并校验 %1 个版本文件...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="346"/>
<source>Extracting and verifying %1 offline files...</source>
<translation>正在提取并校验 %1 个离线文件...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="349"/>
<source>Offline Package Extraction Failed</source>
<translation>离线包提取失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="355"/>
<source>Download Failed</source>
<translation>下载失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="356"/>
<source>Some files failed to download or failed SHA-256 verification. Please check the network and try again.</source>
<translation>部分文件下载失败或 SHA-256 校验未通过,请检查网络后重试。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="362"/>
<source>Verifying complete version files...</source>
<translation>正在校验完整版本文件...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="364"/>
<source>File Verification Failed</source>
<translation>文件校验失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="365"/>
<source>The staged files do not match the version manifest. The update has stopped.</source>
<translation>暂存文件与版本清单不一致,更新已停止。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="378"/>
<source>Bootstrap Cannot Self-Update</source>
<translation>Bootstrap 无法自更新</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="379"/>
<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>
<location filename="../Updater/main.cpp" line="384"/>
<source>Transaction Recording Failed</source>
<translation>事务记录失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="385"/>
<source>Cannot save the list of verified or pending deletion files. The update has stopped.</source>
<translation>无法保存已校验或待删除文件列表,更新已停止。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="388"/>
<source>Closing the main application...</source>
<translation>正在关闭主程序...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="390"/>
<source>Cannot Close Main Application</source>
<translation>无法关闭主程序</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="391"/>
<source>%1 is still running. Please close it manually and try again.</source>
<translation>%1 仍在运行,请手动关闭后重试。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="394"/>
<source>Backing up %1 files to be changed, including %2 files to be deleted...</source>
<translation>正在备份 %1 个待变更文件(其中删除 %2 个)...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="397"/>
<source>Backup Failed</source>
<translation>备份失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="398"/>
<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>
<location filename="../Updater/main.cpp" line="404"/>
<location filename="../Updater/main.cpp" line="414"/>
<location filename="../Updater/main.cpp" line="422"/>
<location filename="../Updater/main.cpp" line="428"/>
<source>Bootstrap Handoff Preparation Failed</source>
<translation>接管准备失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="405"/>
<source>Cannot create the Bootstrap file plan.</source>
<translation>无法创建 Bootstrap 文件计划。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="415"/>
<source>Cannot write the Bootstrap copy plan.</source>
<translation>无法写入 Bootstrap 复制计划。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="423"/>
<source>Cannot write the Bootstrap deletion plan.</source>
<translation>无法写入 Bootstrap 删除计划。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="429"/>
<source>Cannot commit the Bootstrap file plan or transaction state.</source>
<translation>无法提交 Bootstrap 文件计划或事务状态。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="432"/>
<source>Delegating installation to Bootstrap...</source>
<translation>正在将安装工作移交给 Bootstrap...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="434"/>
<source>Bootstrap Startup Failed</source>
<translation>Bootstrap 启动失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="435"/>
<source>Cannot start the standalone update handoff program: %1</source>
<translation>无法启动独立更新接管程序:%1</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="441"/>
<source>Verifying Bootstrap installation result...</source>
<translation>正在校验 Bootstrap 安装结果...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="443"/>
<source>Installation Verification Failed</source>
<translation>安装校验失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="444"/>
<source>New version files failed verification after installation.</source>
<translation>新版本文件安装后校验未通过。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="447"/>
<source>Obsolete File Cleanup Failed</source>
<translation>废弃文件清理失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="448"/>
<source>An obsolete file still exists: %1</source>
<translation>废弃文件仍然存在:%1</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="451"/>
<source>Saving new version state...</source>
<translation>正在保存新版本状态...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="454"/>
<source>State Save Failed</source>
<translation>状态保存失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="455"/>
<source>Cannot save the current version number.</source>
<translation>无法保存当前版本号。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="459"/>
<source>Starting the new version and waiting for health confirmation...</source>
<translation>正在启动新版本并等待健康确认...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="461"/>
<source>Startup Failed</source>
<translation>启动失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="462"/>
<source>%1 cannot be started.</source>
<translation>%1 无法启动。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="471"/>
<source>Startup Confirmation Failed</source>
<translation>启动确认失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="472"/>
<source>The new version did not complete startup health confirmation within %1 milliseconds.</source>
<translation>新版本在 %1 毫秒内没有完成启动健康确认。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="475"/>
<source>Committing update transaction...</source>
<translation>正在提交更新事务...</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="477"/>
<source>Transaction Commit Failed</source>
<translation>事务提交失败</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="478"/>
<source>The new version has started, but the update transaction could not be committed.</source>
<translation>新版本已经启动,但无法提交更新事务。</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="486"/>
<source>Update Complete</source>
<translation>更新完成</translation>
</message>
<message>
<location filename="../Updater/main.cpp" line="487"/>
<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>
<location filename="../Updater/UpdaterLogic.cpp" line="356"/>
<source>Cannot open the offline update package</source>
<translation>无法打开离线更新包</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="357"/>
<source>The offline package format identifier is invalid</source>
<translation>离线包格式标识无效</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="359"/>
<source>The offline package header is incomplete</source>
<translation>离线包头不完整</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="362"/>
<source>The offline package header length is invalid</source>
<translation>离线包头长度无效</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="365"/>
<source>The offline package header JSON is invalid</source>
<translation>离线包头 JSON 无效</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="370"/>
<source>The offline package RSA signature is invalid</source>
<translation>离线包 RSA 签名无效</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="372"/>
<source>The offline package signature metadata is invalid</source>
<translation>离线包签名元数据无效</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="373"/>
<source>The manifest digest does not match the package signature</source>
<translation>Manifest 摘要与包签名不一致</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="375"/>
<source>The offline manifest is invalid</source>
<translation>离线 Manifest 无效</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="378"/>
<source>Package information does not match manifest identity</source>
<translation>包信息与 Manifest 身份不一致</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="379"/>
<source>The offline manifest RSA signature is invalid</source>
<translation>离线 Manifest RSA 签名无效</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="385"/>
<source>The offline package contains an unsafe path or out-of-range data: %1</source>
<translation>离线包包含不安全路径或越界数据:%1</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="388"/>
<source>Cannot prepare offline file: %1</source>
<translation>无法准备离线文件:%1</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="389"/>
<source>Cannot create staged file: %1</source>
<translation>无法创建暂存文件:%1</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="391"/>
<source>Failed to read offline file: %1</source>
<translation>离线文件读取失败:%1</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="392"/>
<source>Offline file hash verification or write failed: %1</source>
<translation>离线文件 Hash 或写入失败:%1</translation>
</message>
<message>
<location filename="../Updater/UpdaterLogic.cpp" line="394"/>
<source>The offline package file count does not match the manifest</source>
<translation>离线包文件数量与 Manifest 不一致</translation>
</message>
</context>
</TS>