Qt 加载翻译文件基本方法

我用的是Qt 4.8.3.

 Qt的翻译分为三步:

        1.运行lupdate或者通过如下图完成该操作(选择Qt语言家然后完成更新翻译),从应用程序中提取所有经tr()标识过的字符串,生成一个后缀为*.ts的文件。

        2.使用Qt Linguist翻译这个*.ts。然后用其生成*.qm

        3.在应用程序中用QTranslator这个类加载*.qm文件。

        要用lupdate生成后缀为*.ts的文件就要先在应用程序的工程文件*.pro中加入这一句:

TRANSLATIONS = Demo_zh_CN.ts

        文件名可以自己定。然后在命令行中运行lupdate -verbose 工程名.pro,程序执行完后,就会生成一个*.ts文件了。

        用Qt Linguis打开*.ts这个文件。如图:

从图片中可以看到Context这一栏,这一栏是根据你程序中的类列出来的。然后旁边的Strings这一栏就是要翻译的语句了。翻译时注意Sources and Forms这一栏,和Warnings这一栏就行了。前一栏可以看到要翻译的语句的出处,后一栏可以看到警告信息。警告信息还是很有用的。每翻译完一句,点工具栏上的那个有绿色勾的图标,就可以完成翻译,并跳到下一句。完全正确的那句就会出现绿色的小勾,有警告信息的就会变成黄色的勾,还没有翻译的就还是问号。

        注意:1.我发现有些地方,我按照原格式是应该加"\n"的。可是翻译出来后,"\n"也显示在了中文语句中,而不是回车换行。2.对于"&Load"这样的语句,我们可以跟其他软件一样,翻译成"加载(&L)",这样就不会有快捷键丢失的警告了。3.翻译出来的语句跟原语句的格式要相符,尤其是后面的标点。我发现比如我原来用的是英文的句号".",然后我改成中文的句号"。"就没有警告提示了。可是当原来是英文的"!"时,翻译成"!"就还是有警告信息。奇怪~

        翻译完后,点File-->Release就可以生成*.qm文件了。在main.cpp中用如下语句加载:

        QTranslatorqtTranslator;

        qtTranslator.load("orbitEditor_zh_CN.qm",":/");
        a.installTranslator(&qtTranslator);
        当然记得把*.qm加入资源文件*.qrc。根据路径的不同,自己修改上面load那句。

        这样翻译完后,可能会出现两个问题:

        1.Qt的内部类比如QMessageBox,QDialog等中的语句没有翻译成中文。对于这个问题,再加载一个翻译文件就行。Qt已经为我们准备好了,在"安装目录\translations中。我用的就是qt_zh_CN.ts这个文件,Qt已近为我们翻译好了。只要将它导出为*.qm文件就可以加载了。

        2.翻译成中文后,中文的文字很小,得很努力看才看得清。。。这个最简单的方法就是设置下全局的文字大小。

        所以,最后在main.cpp中所有的加载语句是:

     QApplicationa(argc,argv);
    //加载中文翻译
    //加载本软件的翻译
    QTranslator qtTranslator;
    qtTranslator.load("orbitEditor_zh_CN.qm",":/");
    a.installTranslator(&qtTranslator);
    //加载Qt其他类,比如QDialog的翻译
    QTranslator qtGloble;
    qtGloble.load("qt_zh_CN.qm",":/");
    a.installTranslator(&qtGloble);
    //设置全局文字大小
    QFont font  = a.font();
    font.setPointSize(12);
    a.setFont(font);

我的代码部分:

    #include <QTranslator>
   
    QTranslator trlQt, trlApp;
    const QString& strLocaleName = QLocale::system().name();
    const QString& strQtTrlPath = QLatin1String(":/translations");
    const QString& strQtTrlFile = QLatin1String("qt_") + strLocaleName;

    const QString& strAppTrlPath = QLatin1String(":/translations");
    const QString& strAppTrlFile = QLatin1String("Demo_") + strLocaleName;

    if (trlQt.load(strQtTrlFile, strQtTrlPath)) {
        a.installTranslator(&trlQt);
    }

    if (trlApp.load(strAppTrlFile, strAppTrlPath)) {
        a.installTranslator(&trlApp);
    }

借鉴自:https://blog.csdn.net/yangxiao_0203/article/details/7488967

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt 所提供的 3D 模型加载功能,可以轻松地将 OBJ 文件加载到应用程序中进行展示。OBJ 文件是一种常见的 3D 模型文件格式,通常是由 3D 建模软件生成的,包含了模型的各种属性信息。下面是在 Qt加载 OBJ 文件的一些具体步骤: 1. 创建一个 QEntity 对象,作为整个模型的容器。 2. 创建一个 QMesh 对象,用于存储 OBJ 文件中的顶点和面信息。 3. 通过 QMesh 对象的 load() 方法,将 OBJ 文件读取到 QMesh 对象中。 4. 创建一个 QMaterial 对象,用于控制模型的材质属性。 5. 创建一个 QDiffuseMapMaterial 对象,用于指定模型的纹理贴图。 6. 创建一个 QTransform 对象,用于设置模型的位置、姿态等属性。 7. 将 QMesh、QMaterial、QTransform 等对象添加到 QEntity 容器中。 8. 将 QEntity 显示在场景中,即可完成模型的加载和展示。 需要注意的是,在加载 OBJ 文件时,要根据文件格式中的具体内容将数据解析成顶点坐标、法向量等等,然后将这些数据存储到 QMesh 对象中。此外,还可以通过监听 QMesh 对象的 visibilityChanged() 信号,并根据需要进行一些额外的操作,以实现更加丰富的模型效果。 总的来说,Qt 提供的 3D 功能非常强大,可以轻松实现 OBJ、STL、FBX 等常见的 3D 模型文件格式的加载和展示。开发者只需按照上述步骤进行简单配置,就能够将丰富的 3D 模型效果带到应用程序中,提升用户体验和应用价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值