找回密码
 立即注册
收起左侧

qt中英文翻译

3
回复
8285
查看
[复制链接]

尚未签到

来源: 2013-6-17 09:29:54 显示全部楼层 |阅读模式
1Qter豆
最近在做一个中英文翻译,但是不知道是哪里出现了问题,我觉得我的做法没有问题,下面我将我的实现过程贴出来,希望有人能够帮我找到问题的所在。。。
首先我是在.pro文件添加了
TRANSLATIONS += zh_CN.tsTRANSLATIONS += en_EN.ts
然后在QtCreator点击“工具”->"外部“-》”Qt语言家“-》更新翻译(lupdate),就生成了.ts文件,然后用qt只带的Linguist工具打开,对其进行翻译,每翻译完成就点击工具栏中绿色的勾,当全部翻译完成就保存关闭,然后点击QtCreator中的“工具”->"外部“-》”Qt语言家“-》发布翻译(lrelease),这样就生产了.qm文件,现在来实现翻译,我有个菜单按钮,菜单按钮下有”english"、"chinese",Action,点击chinese (Action)就在槽函数中加载翻译,我的槽函数实现的代码如下:
QTranslator trans;

trans.load(":/zh_CN.qm");qApp->installTranslator(&trans);
但是运行发现,点击中文没有什么反应,然后我打开.ts文件,发现翻译好了,但是我发现一个问题,就是我点击字符串中的“Chinese”,对应的代码中的tr(“chinese”)代码的上一段代码,我不知道是不是这个原因导致的
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

QTranslator translator; translator.load("hellotr_la"); app.installTranslator(&translator); 必须放到要翻译的窗口创建前执行。 在帮助文档的例子: int main(int argc, char *argv[]) { QApplication app(argc, argv); QTranslator translator; translator.load("hellotr_la"); app.installTranslator(&translator); QPushButton hello(QPushButton::tr("Hello world!")); h ...
回复

使用道具 举报

累计签到:1570 天
连续签到:1 天
2013-6-17 09:29:55 显示全部楼层
QTranslator translator;
     translator.load("hellotr_la");
     app.installTranslator(&translator);

必须放到要翻译的窗口创建前执行。


在帮助文档的例子:

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

     QTranslator translator;
     translator.load("hellotr_la");
     app.installTranslator(&translator);

     QPushButton hello(QPushButton::tr("Hello world!"));
     hello.resize(100, 30);

     hello.show();
     return app.exec();
}

下面有句提示:
Note that the translator must be created before the application's widgets.

回复

使用道具 举报

尚未签到

2013-6-17 09:34:39 显示全部楼层
但是我把那段代码直接放在main()中可以得到我想要的结果,就是实现了中文翻译,为什么我点击chinese这个Action,来实现翻译就不能呢?qApp->installTranslator(&trans);
回复

使用道具 举报

尚未签到

2013-6-19 14:11:28 显示全部楼层
好像可以动态翻译吧,它有一个demo就是动态加载翻译的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了