如何调试虚拟变量translator.load()

时间:2019-02-05 16:10:48

标签: qt qml

无论我尝试什么,翻译器都不会加载翻译文件,并且只会显示id而不是翻译

我尽一切可能用谷歌搜索了一切

#include <QQmlApplicationEngine>
#include <QGuiApplication>
#include <QtQml>
#include <QTranslator>

int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

QTranslator translator;
translator.load(QLocale(), "c:/asteroid/asteroid-sporttracking-master", ".", "i18n", ".gm");
app.installTranslator(&translator);

return app.exec();
}

翻译文件的完整路径为: c:\ asteroid \ asteroidsporttracking-master \ i18n \ asteroid-sportapp.en_GB.ts  -有些文件带有multipla local()-en_GB / cs / etc

有没有办法console.log()由translator.load()创建的虚拟变量?

2 个答案:

答案 0 :(得分:0)

因此,毕竟我发现翻译后的文件必须位于调试器将编译可执行文件的目录中,而不是代码目录中

答案 1 :(得分:0)

您混淆了QM和TS文件。您需要使用lupdate和lrelease工具。 lupdate创建和更新TS文件,然后lrelease生成QM文件。该应用程序将使用QM文件。

在您的代码中必须输入路径和文件名,因为系统找不到QM文件,但是使用绝对路径不是一个好主意。请看我的例子:

String filename = QString("app.qm");
QString path = QApplication::applicationDirPath();

if(translator.load(path + filename)){
        qApp->installTranslator(&translator);
}