QML与C++的国际化

Posted by Srefan on March 30, 2020

一.概述

  • 工作中的Qt项目需要支持多语言, 过程中遇到了很多麻烦, 记录一下.

二.流程

  • 在项目文件 sample.pro 中添加如下代码.
1
TRANSLATIONS += zh_CN.ts
  • 到终端中执行如下命令,生成 zh_CN.ts 文件.
1
lupdate sample.pro
  • 继续在终端中执行如下命令, 将项目中有字符的 C++源码qml文件 的字符取出, 添加到 ts 文件中.
1
lupdate main.cpp main.qml -ts zh_CN.ts
  • 使用 Qt Linguist 打开 zh_CN.ts 文件, 填写翻译内容, 保存文件.

  • 回到终端执行如下命令, 生成release文件 zh_CN.qm.

1
lrelease zh_CN.ts
  • 将生成的 zh_CN.qm 文件添加到项目的 main.qrc 文件中.

  • main.cpp 中添加加载代码.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtCore>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);

    // 添加如下代码
    QTranslator translator;
    translator.load(QString(":/zh_CN"));
    app.installTranslator(&translator);
    // 添加如上代码

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}
  • 运行, 看是否生效.

三.参考链接

此文参考于 Qt Quick核心编程-安晓辉,十分感谢.
所有引用内容版权归原作者所有.
使用 知识共享“署名-非商业性使用-相同方式共享 3.0 中国大陆”许可协议 授权.