我正在尝试使用翻译文件。我完成了所有程序: 创建了ts文件,翻译了它,但是当我运行应用程序时,语言仍然和以前一样。
我参与了诺基亚的例子,就像在说明书中一样。
可能是我的问题?
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTranslator* translator=new QTranslator(0);
if(QFile::exists("hellotr_la.qm"))
qWarning("failed-no file");
if(! translator->load("hellotr_la.qm"))
qWarning("failed loading"); //the warning appears ****
app.installTranslator(translator);
}
答案 0 :(得分:19)
.qm文件位于何处?您的代码正在尝试从当前工作目录加载文件,该目录在运行时可以是任何内容。在QTranslator::load
的调用中指定目录路径:
QTranslator* translator = new QTranslator();
if (translator->load("hellotr_la", "/path/to/folder/with/qm/files")) {
app.installTranslator(translator);
}
翻译可以从Qt resources加载,因此最好将它们捆绑在可执行文件中。然后你会加载它们像这样:
QTranslator* translator = new QTranslator();
if (translator->load("hellotr_la", ":/resources/translations")) {
app.installTranslator(translator);
}
答案 1 :(得分:3)
答案已在评论中给出,但我想明确指出。
第一个警告使用了错误的条件:
if(QFile::exists("hellotr_la.qm"))
qWarning("failed-no file");
应该是:
if(!QFile::exists("hellotr_la.qm"))
qWarning("failed-no file");
由于您只看到了第二个警告,但没有看到第一个警告,问题确实是找不到该文件。确保工作目录符合您的预期,或者(更好地)使用资源系统,如andref所述。
答案 2 :(得分:0)
根据这个例子,你可以试试这个:
QTranslator translator;
translator.load("hellotr_la");
app.installTranslator(&translator);
希望它能解决你的问题!
注1:此处没有指针。
注2:文件名中没有扩展名。