如何使用 C++ 中的 QtLinguist 将程序翻译成语言?
Posted
技术标签:
【中文标题】如何使用 C++ 中的 QtLinguist 将程序翻译成语言?【英文标题】:How to translate a program into a language with QtLinguist in C++? 【发布时间】:2021-12-28 20:51:42 【问题描述】:我在 QtCreator 上编写了代码来将我的应用程序的 GUI 翻译成英语和西班牙语。此应用程序是用法语编写的。 .ts 翻译文件已生成。我在 QtLinguist 上将字符串翻译成英文(但不是西班牙文),并用绿色箭头在字段上打勾以表明我确定翻译。但是当我通过 lrelease 生成文件 .qm 时,IDE 写道: 正在更新 'C:/Users/user/Documents/ZeroClassGenerator/zeroclassgenerator_en.qm'...
生成 3 个翻译(3 个已完成,0 个未完成) 正在更新 'C:/Users/user/Documents/ZeroClassGenerator/zeroclassgenerator_es.qm'...
生成 0 个翻译(0 个已完成,0 个未完成) 忽略了 3 个未翻译的源文本 “C:\QtSdk2\6.2.1\mingw81_64\bin\lrelease.exe”完成 但是要翻译的文本还没有翻译成英文。但是,我将 .qm 文件与我的软件的可执行文件放在同一个文件夹中,并在主文件中编写了以下代码:
#include "FenPrincipale.h"
#include <QApplication>
#include <QTranslator>
int main(int argc, char *argv[])
QApplication a(argc, argv);
QTranslator translator;
translator.load("zeroclassgenerator_en");
a.installTranslator(&translator);
FenPrincipale fenetre;
fenetre.show();
return a.exec();
由于那个代码不起作用,我写了这个。
#include "FenPrincipale.h"
#include <QApplication>
#include <QTranslator>
int main(int argc, char *argv[])
QApplication a(argc, argv);
QTranslator translator;
if( translator.load("zeroclassgenerator_en"))
a.installTranslator(&translator);
FenPrincipale fenetre;
fenetre.show();
return a.exec();
我不知道我哪里出错了。
【问题讨论】:
But the text to be translated has not been translated into English
是什么意思?您使用哪种语言作为主要语言?
另外,QCoreApplication::installTranslator
和 QTranslator::load
返回bool
,尝试验证他们的结果。
jdfa ,应用语言为法语。
【参考方案1】:
可能发生的是 QTranslator::load 失败;由于您没有指定绝对路径,也没有将目录作为第二个参数传递,因此它只会尝试在您当前的工作目录中查找文件。
为了使其更健壮,您应该 a) 将目录指定为第二个参数,并且 b) 检查 installTranslator() 的返回值:
int main(int argc, char *argv[])
QApplication a(argc, argv);
QTranslator translator;
if (!translator.load("zeroclassgenerator_en", QApplication::applicationDirPath()))
qWarning("Could not load translation file");
a.installTranslator(&translator);
FenPrincipale fenetre;
fenetre.show();
return a.exec()
【讨论】:
以上是关于如何使用 C++ 中的 QtLinguist 将程序翻译成语言?的主要内容,如果未能解决你的问题,请参考以下文章