wxPython-国际化设置
得益于gettext的支持,wxpython可以使用gettext库来让你的应用程序支持多国语,走向世界.在wxpython中有个比较方便的脚本mki18n.py,来自动生成.po和.mo.下面是一个自动生成的脚本:
gen_lang.sh放在你工程目录的lang或languages目录下,注意:这里生成的message.pot中的CHARSET已经要替换掉,否则程序无法执行,例如,替换成"UTF-8".
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/bin/bash # mki18n.py依赖app.fil,里面是所有的py文件列表 find ../ -iname "*.py" -print >app.fil # 生成.po文件,domain一定要换成自己的 python mki18n.py - v -p --domain=your_application_name ./ # 上句命令,会生成message.pot文件,这个是一个模板文件. # 如果需要zh_CN的翻译,可以拷贝message.pot为 your_applaciton_name_zh_CN.po # 那么每次执行后就会生成your_applaciton_name_zh_CN.po.new,比较一下,合入新的未翻译的条目吧. # 生成.mo文件 # 这个会生成类似 # zh_CN/LC_MESSAGES/your_applaction_name.po python mki18n.py -m -e - v --domain=your_application_name --moTarget=./ |
在应用程序中,你只需要调用下面的install函数即可.
1 2 3 4 5 6 | # coding: utf-8 import gettext def install(localdir, lang): gettext.translation( "sgsgame" , localedir = localdir, languages = lang).install( True ) |
例如:
1 2 3 4 5 6 7 8 | # languages install import util langdir = os.path.join(home, "lang" ) try : util.i18n.install(langdir, [ 'zh_CN' ]) except : traceback.print_exc() util.i18n.install(langdir, [ 'en_US' ]) |
然后,应用程序中,所有 _()包括的字符串都会被翻译成中文,当然,前提是你已经在po文件中翻译好了.
参考连接: http://wiki.wxpython.org/Internationalization