wxPython-国际化设置

imouse posted @ 2012年10月28日 01:51 in Linux with tags gettext i18n , 1745 阅读

    得益于gettext的支持,wxpython可以使用gettext库来让你的应用程序支持多国语,走向世界.在wxpython中有个比较方便的脚本mki18n.py,来自动生成.po和.mo.下面是一个自动生成的脚本:

gen_lang.sh放在你工程目录的lang或languages目录下,注意:这里生成的message.pot中的CHARSET已经要替换掉,否则程序无法执行,例如,替换成"UTF-8".

#!/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函数即可.

# coding: utf-8
import gettext


def install(localdir, lang):
    gettext.translation("sgsgame", localedir=localdir, languages=lang).install(True)

例如:

# 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


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter