QT翻译的使用及避坑指南

您所在的位置:网站首页 失败如何翻译 QT翻译的使用及避坑指南

QT翻译的使用及避坑指南

2024-07-14 09:05| 来源: 网络整理| 查看: 265

一、简介

使用翻译的好处

1、qt 在使用msvc编译器时,中文显示乱码,使用翻译可以有效解决

2、界面上的文字提示经常需要改变,只需要重新发布一个翻译文件即可,无需改动源码

二、翻译流程

1、配置:项目pro加入TRANSLATIONS  

TRANSLATIONS += xxx_zh.ts \ xxx_en.ts

2、需要翻译的文字需要用tr()包括起来

ui->ribbonTabWidget->addTab(tr("Project")); ui->ribbonTabWidget->addTab(tr("Setting")); ui->ribbonTabWidget->addTab(tr("Basic tools")); ui->ribbonTabWidget->addTab(tr("Advanced tools"));

3、更新: 打开cmd运行lupdate xxx.pro,从源代码中提取要翻译的文本

注意:必须使用qt下的cmd

 4、翻译:使用翻译工具Qt Linguist,打开ts文件,并完成翻译工作

5、发布:Qt Linguist 文件=》发布,生成xxx.qm

6、main.cpp中加载翻译文件

QTranslator appTranslator; appTranslator.load(app_path + "/translations/czvision_zh.qm"); app.installTranslator(&appTranslator);

三、常见问题

1、QDialogButtonBox翻译不生效问题

这是qt的一个bug,https://bugreports.qt.io/browse/QTBUG-39180

解决方案如下:编辑src/qttranslations/translations/qt_zh_CN.ts,把QDialogButtonBox 替换为 QPlatformTheme, 重新发布即可

2、多个pro工程,多翻译问题,定义一个翻译器不生效

解决办法:必须定义多个翻译器,不能共用一个

QTranslator qtTranslator; QTranslator appTranslator; QTranslator coreTranslator; qtTranslator.load(app_path + "/translations/qt_zh_CN.qm"); appTranslator.load(app_path + "/translations/czvision_zh.qm"); coreTranslator.load(app_path + "/translations/CZCore_zh.qm"); app.installTranslator(&qtTranslator); app.installTranslator(&appTranslator); app.installTranslator(&coreTranslator);

3、只有继承QObject的类才能使用tr()函数,如何翻译非 Qt 类?

解决办法:使用QCoreApplication::tr(),

splash.showProgressMessage(1, QCoreApplication::tr("Load config file"));

4、如何翻译复数?

如:The camera 1 is not connected

The camera 2 is not connected

方案1:改为 %n

QMessageBox::warning(this, tr("Camera"), tr("The camera %n is not connected", "", m_cameraID), QMessageBox::Ok);

上述代码的 tr() 函数,第一个参数是实际展示的文本,变量用 %n表示,就好比 %1、%2等之类的。book 的复数形式用括号括起来,翻译之后就会根据数来显示不同的形式;第二个参数是注释用的,这里面写不写看你自己,反正是给翻译人员看的;第三个就是这个变量 n。

 

方案2:改为%1 %2 %3

方案1对1个复数有效,多个就没办法了,如1-1,1-2,2-1

QMessageBox::warning(this, tr("Camera"), tr("The camera %1-%2 is not connected").arg(111).arg(222), QMessageBox::Ok);

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3