首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QTranslator加载qm文件

使用QTranslator加载qm文件
EN

Stack Overflow用户
提问于 2010-10-27 22:08:34
回答 3查看 19.7K关注 0票数 12

我在试着使用翻译文件。我经历了所有的过程:创建ts文件,翻译它,但当我运行应用程序时,语言仍然和以前一样。

我做了诺基亚的例子,就像在说明中一样。

我会有什么问题呢?

代码语言:javascript
复制
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);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-29 03:38:33

.qm文件位于何处?您的代码正在尝试从当前工作目录加载文件,该目录可以是运行时的任何内容。在QTranslator::load调用中指定目录路径

代码语言:javascript
复制
QTranslator* translator = new QTranslator();
if (translator->load("hellotr_la", "/path/to/folder/with/qm/files")) {
    app.installTranslator(translator);
}

翻译可以从Qt resources加载,因此将它们捆绑在可执行文件中是一个好主意。然后,您可以像这样加载它们:

代码语言:javascript
复制
QTranslator* translator = new QTranslator();
if (translator->load("hellotr_la", ":/resources/translations")) {
    app.installTranslator(translator);
}
票数 24
EN

Stack Overflow用户

发布于 2010-11-01 20:01:08

答案已经在评论中给出了,但我想明确指出。

第一个警告使用了错误的条件:

代码语言:javascript
复制
if(QFile::exists("hellotr_la.qm"))
    qWarning("failed-no file");

它应该是:

代码语言:javascript
复制
if(!QFile::exists("hellotr_la.qm"))
    qWarning("failed-no file");

因为您只看到了第二个警告,而没有看到第一个警告,所以问题确实是没有找到该文件。确保工作目录是您期望的目录,或者(最好)使用andref所解释的资源系统。

票数 3
EN

Stack Overflow用户

发布于 2010-10-28 01:44:55

基于这个例子,你能简单的尝试一下吗:

代码语言:javascript
复制
 QTranslator translator;
 translator.load("hellotr_la");
 app.installTranslator(&translator);

希望它能解决你的问题!

注1:这里没有指针。

注2:您的文件名中没有扩展名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4034158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档