PyGTK 多语言

今天上午折腾了半天,不妨记个笔记。

我们假设一个傻傻的 app 叫做 foo_app,再虚构一些目录。真正使用的时候可别直接照抄哦。

1.Python 文件

首先要加入下面的三行

import gettext
from gettext import gettext as _
gettext.textdomain('foo_app')

然后就可以用 gettext 通用的格式了。例:

print _('Beautiful day!')

貌似 Python 里面还不支持嵌入给翻译者的注释,所以这里一定要用表达清晰的英文。

2.Glade 文件

对于 Glade 文件来说是非常简单的,只要把某个部件的“可译的”勾上就万事大吉了。还是那句话,要用人类可读的英语。
当然为了感谢一下冒着烈日辛勤翻译的 translators,不妨在“翻译者致谢”中写上 translator-credits。这样翻译者可以轻松地将这个字串换成自己的大名然后臭显摆去。

3.转换 Glade 的 XML 文件为 .h 文件

第一步要把 .glade 的 XML 文件转换成一些 .h 文件,以便生成 pot 文件。

intltool-extract --type=gettext/glade some_dir/FooWindow.glade

4.生成 pot 文件

这一步很爽,直接通配符就行了。

xgettext --language=Python --keyword=_ --keyword=N_ --output=po/foo_app.pot some_dir/*.h some_other_dir/*.py *.py

这样就产生了一个 pot 文件,然后你就可以考虑用这个 pot 泡壶茶喝了。

5.开始翻译吧!

这里的内容就不赘述了,详细的可以看自由软件中文化工作指南(L10N)