• 6375阅读
  • 8回复

为什么翻译文件没有加载? [复制链接]

上一主题 下一主题
离线wsbd008
 
只看楼主 倒序阅读 楼主  发表于: 2009-10-30
#include <QApplication>
#include <QTranslator>
#include <QtGui/QPushButton>

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    QTranslator translator;

    translator.load("trans_zh");
    app.installTranslator(&translator);

    QPushButton hello(QPushButton::tr("Hello"));
    hello.show();

    return app.exec();
}

我的翻译文件trans_zh.ts已经写好了,没有unfinished标记,然后也生成qm文件了,但是运行以后还是没有翻译,为什么啊?
离线hiti_tony
只看该作者 1楼 发表于: 2009-10-30
那你就跟一下,看哪一步失败了。
translator.load("trans_zh.qm");试试
离线午小夜

只看该作者 2楼 发表于: 2009-11-01
  1. bool load ( const QString & filename, const QString & directory = QString(), const QString & search_delimiters = QString(), const QString & suffix = QString() )
  2. bool load ( const uchar * data, int len )
  3. Returns true if the translation is successfully loaded; otherwise returns false.


which function do you want to use? have you already specified the directory of the translator file?like :

QTranslator appTr;
appTr.load("sh_simple_CN.qm","/opt/foolib").
app.installTranslator(&appTr);
[ 此帖被午小夜在2009-11-01 18:03重新编辑 ]
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线nmiirq

只看该作者 3楼 发表于: 2009-11-02
load 后,凡是用tr()包起来的Text还要set一回的,大致是这样:
比如setTitle(tr("Hi,Title!"));此句必在load后再调一回,切换的效果才可能显示出来!
离线wsbd008
只看该作者 4楼 发表于: 2009-11-03
引用第2楼午小夜于2009-11-01 17:57发表的  :
  1. bool load ( const QString & filename, const QString & directory = QString(), const QString & search_delimiters = QString(), const QString & suffix = QString() )
  2. bool load ( const uchar * data, int len )
  3. Returns true if the translation is successfully loaded; otherwise returns false.

.......


看参数应该是第一个,但是返回false了,不知道为什么。。。
离线wsbd008
只看该作者 5楼 发表于: 2009-11-03
引用第1楼hiti_tony于2009-10-30 17:54发表的  :
那你就跟一下,看哪一步失败了。
translator.load("trans_zh.qm");试试


饿,这个返回false了,不知道怎么弄,高手指点下呀。
离线wsbd008
只看该作者 6楼 发表于: 2009-11-03
引用第3楼nmiirq于2009-11-02 15:43发表的  :
load 后,凡是用tr()包起来的Text还要set一回的,大致是这样:
比如setTitle(tr("Hi,Title!"));此句必在load后再调一回,切换的效果才可能显示出来!


我试了下,不行。。。

上面本来就在load后面调用的,再说如果那样大点的程序就很难写了,还有这个是帮助里面的例子,应该没那么麻烦。
离线ker704334
只看该作者 7楼 发表于: 2009-11-03
试试看,qm文件要跟exe文件在相同的folder
离线wsbd008
只看该作者 8楼 发表于: 2009-11-09
引用第7楼ker704334于2009-11-03 17:54发表的  :
试试看,qm文件要跟exe文件在相同的folder


哦,可以了,谢谢。
快速回复
限100 字节
 
上一个 下一个