我在试着使用翻译文件。我经历了所有的过程:创建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);
}发布于 2010-10-29 03:38:33
.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);
}发布于 2010-11-01 20:01:08
答案已经在评论中给出了,但我想明确指出。
第一个警告使用了错误的条件:
if(QFile::exists("hellotr_la.qm"))
qWarning("failed-no file");它应该是:
if(!QFile::exists("hellotr_la.qm"))
qWarning("failed-no file");因为您只看到了第二个警告,而没有看到第一个警告,所以问题确实是没有找到该文件。确保工作目录是您期望的目录,或者(最好)使用andref所解释的资源系统。
发布于 2010-10-28 01:44:55
基于这个例子,你能简单的尝试一下吗:
QTranslator translator;
translator.load("hellotr_la");
app.installTranslator(&translator);希望它能解决你的问题!
注1:这里没有指针。
注2:您的文件名中没有扩展名。
https://stackoverflow.com/questions/4034158
复制相似问题