fe5aa5bbf0
update-client-hardening 四工作流合入(构建/静态检查已过): - 配置:不可变产品策略经 UpdateClientResources.cmake 归一化校验后 内嵌 qrc(URL/相对路径/主程序必须落 install_root/版本/UUID 格式, CMake override 写入前复验);可变机器状态迁系统级原生存储; 运行目录不再落可编辑 app_config.json。 - i18n:生产源全英文(no-Han 检查 41/41),中文进 translations/ zh_CN 目录;翻译加载收敛 Common/TranslationHelper 唯一入口; Bootstrap 补资源文件。 - 依赖:Qt/OpenSSL/架构/Perl 机器路径改 imported targets + UpdateClientDependencies.cmake,3rdparty 由父工程契约供给。 - 清理:旧 README/SDK README/3 个重复 PowerShell 打包脚本/PDF 提取 文本删除,canonical README + 5 份结构化英文文档替代;Launcher requireAdministrator manifest;统一 MSVC /utf-8 删运行时编码设置。
54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
#include "TranslationHelper.h"
|
|
|
|
#include <QCoreApplication>
|
|
#include <QDir>
|
|
|
|
namespace
|
|
{
|
|
constexpr auto kSimplifiedChineseCatalog =
|
|
":/simcae/update-client/i18n/update-client_zh_CN.qm";
|
|
constexpr auto kQtSimplifiedChineseCatalog = "translations/qt_zh_CN.qm";
|
|
|
|
bool usesSimplifiedChinese(const QLocale& locale)
|
|
{
|
|
if (locale.language() != QLocale::Chinese ||
|
|
locale.script() == QLocale::TraditionalHanScript)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return locale.script() == QLocale::SimplifiedHanScript ||
|
|
locale.country() == QLocale::China ||
|
|
locale.country() == QLocale::Singapore;
|
|
}
|
|
}
|
|
|
|
TranslationHelper::TranslationHelper()
|
|
{
|
|
m_simplifiedChineseCatalog.load(
|
|
QString::fromLatin1(kSimplifiedChineseCatalog));
|
|
}
|
|
|
|
bool TranslationHelper::installForSystemLocale()
|
|
{
|
|
if (!usesSimplifiedChinese(QLocale::system()) ||
|
|
m_simplifiedChineseCatalog.isEmpty())
|
|
{
|
|
return false;
|
|
}
|
|
|
|
const QString qtCatalogPath = QDir(QCoreApplication::applicationDirPath())
|
|
.filePath(QString::fromLatin1(
|
|
kQtSimplifiedChineseCatalog));
|
|
if (m_qtSimplifiedChineseCatalog.load(qtCatalogPath))
|
|
QCoreApplication::installTranslator(&m_qtSimplifiedChineseCatalog);
|
|
|
|
return QCoreApplication::installTranslator(&m_simplifiedChineseCatalog);
|
|
}
|
|
|
|
QString TranslationHelper::translate(const char* context,
|
|
const char* sourceText) const
|
|
{
|
|
return m_simplifiedChineseCatalog.translate(context, sourceText);
|
|
}
|