想用PyQt实现国际化,google了一下,Qt的资料倒是很多,但是PyQt的基本没有,有的也说得含糊不清了。
无奈只有翻文档,文档也只说了先用pylupdate4生成ts语言文件,然后用linguist进行翻译,最后使用rlease
生成qm工程文件,但是自己按照这个方式写起来错误百出,弄了一晚上终于整好了~~分享下~~~
1.首先写程序,这里我使用Qtdesigner设计的,然后用pyuic4命令生成代码,这步就省略了,拖拽什么的谁
不会啊。。。程序如下图:(需要说明的是,国际化的时候源程序所有东西都用English的,然后再翻译~)
可以看到这里全部都是英文的。
2.然后就是创建语言文件了,按照手册里面说的“The programmer uses pylupdate4 to create or update a
.ts translation file for each language that the application is to be translated into”,然后使用这个命令的
帮助看了下,是这样的:
很多C++的资料说,那个project-file就是pro的工程文件,但是咱们python哪来的工程文件啊!找了好半天
才明白,不一定需要工程文件的,这里面的那个project-file可以是任何你需要翻译的文件,于是乎~就使用
pylupdate4 Ui_fileasearch.py -ts zh_CN.ts解决!
后来才知道所谓的工程文件就是对一系列文件的说明,大概是如下的结构:
SOURCES = main.py\
ui_mainWindow.py\
otherFile.py\
etc
TRANSLATIONS = appName_ar.ts
CODECFORTR = UTF-8
CODECFORSRC = UTF-8
就是说如果你有一系列的文件需要国际化的话,可以手动写一个工程文件,然后他可以将所有需要翻译的东
西全部都提取出来,当然你也可以写一个简单的脚本,楼主就是这么干滴,因此方便省事儿多啦
3.接下来用Linguist打开ts文件,愉快地完成翻译工作吧,这里没有什么好说滴~
4.然后使用命令rlease zh_CN.ts得到文件zh_CN.qm这就是我们要滴咯~等等,还有一步。。。
5.前面是仅仅完成了表面上的翻译工作,咱们的程序还不知道呢。所以还需要在程序里面加一个东西,首先
from PyQt4.QtCore import QTranslator
然后,在程序里加上如下内容:
trans = QTranslator()
trans.load("zh_CN")# 这里是之前生成的qm文件,注意没有后缀,程序知道
app = QApplication(sys.argv)
app.installTranslator(trans)# 就是这一步!
最后打开程序看看是不是翻译好了!楼主的如下:
大功告成!效果不错~~