• 9581阅读
  • 12回复

[提问]QT多语言切换问题(急) [复制链接]

上一主题 下一主题
离线ichliebedich
 

只看楼主 倒序阅读 楼主  发表于: 2011-07-19
系统生成的ts文件,它能不能把多个工程的内容都翻译出来?还是一个ts文件,只能翻译相对应的工程?
离线dbzhang800

只看该作者 1楼 发表于: 2011-07-19
没看懂你的标题和正文是什么关系。

多个pro对应一个 ts 文件么?答案是可以(而且Qt本身就是这么做的,QtGui、Qt3support、QtNetwork ....对应的翻译文件就一个 qt_zh_CN.ts)
离线ichliebedich

只看该作者 2楼 发表于: 2011-07-19
回 1楼(dbzhang800) 的帖子
我按照qt_zh_CN.ts文件写了一个类似的,写完之后用语言工具打开,显示“文件 XXX不可读”,这个影响翻译么?

我两个工程用一样的ts文件,lupdate后,再用工具打开,同样出现上述问题,请大虾指点下,谢谢~
离线abcdlcq

只看该作者 3楼 发表于: 2011-07-19
直接用lupdate吧,你仔细看看lupdate的命令
离线ichliebedich

只看该作者 4楼 发表于: 2011-07-19
回 3楼(abcdlcq) 的帖子
两个工程test1,test2
test1.pro:
...
TRANSLATIONS += ../test2_zh_CN.ts

test2.pro:
...
TRANSLATIONS += test2_zh_CN.ts

我用lupdate test1.pro之后,显示:
"Found xx source text(s)(xx new and xx already existing)"

再用lupdate test2.pro之后,显示:
"Found yy source text(s)(yy new and xx already existing)"
"Kept xx obsolete entries"

打开test2_zh_CN.ts文件后,只有lupdate test2.pro之后的信息,原来的执行lupdate test1.pro后的信息没有了。

如何让执行lupdate test1.pro的信息也保存到test2_zh_CN.ts中呢?
离线ichliebedich

只看该作者 5楼 发表于: 2011-07-19
原来只要lupdate test1.pro ../test/test2.pro就可以把他们的内容全都包含里面了……

最后一个问题,模块很多,切换语言之后,必须把所有的带tr("...")的都全重写一遍么?有没有简单的方法?每个模块都没有用UI。
离线zzjin

只看该作者 6楼 发表于: 2011-07-19
是的。必须重新tr一遍。qt一般的自己的做法是把全部tr单独放入一个函数。。。。
离线ichliebedich

只看该作者 7楼 发表于: 2011-07-20
回 6楼(zzjin) 的帖子
那有的一些变量怎么处理啊?
离线abcdlcq

只看该作者 8楼 发表于: 2011-07-20
建议别在pro文件里写,直接用lupdate提取出ts文件就行了,ts文件加不加到工程中都没关系,关键是qm文件
离线XChinux

只看该作者 9楼 发表于: 2011-07-20
写个批命令脚本,需要生成的时候执行一下即可
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线zzjin

只看该作者 10楼 发表于: 2011-07-20
回 7楼(ichliebedich) 的帖子
变量看你怎么存储的了。一般都可以约定对应的编码格式。转换成你的程序使用的编码格式直接展示就可以了
离线ichliebedich

只看该作者 11楼 发表于: 2011-07-22
回 10楼(zzjin) 的帖子
某函数中有局部变量QLabel *test = new QLabel(tr("xxx"));

当设置完翻译后,这句也需要重新tr();这个怎么处理呢?
离线zzjin

只看该作者 12楼 发表于: 2011-07-22
回 11楼(ichliebedich) 的帖子
重新settext。你要国际化就别在new的时候给予显示的文字
快速回复
限100 字节
 
上一个 下一个