0

我在 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();
}

我不知道我哪里错了。

4

1 回答 1

0

可能发生的是 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()
}
于 2022-01-06T14:17:39.430 回答