国际化复数形式的支持与pygettext的补丁
今天把plugs中的论坛进行了一些优化,其中想使用uliweb中早就内置的timesince.py模块。这块需要i18n的支持。于是使用:
uliweb i18n -l zh_CN --uliweb
来运行。结果报错。其主要原因是timesince中使用了复数形式的i18n函数ungettext。而uliweb使用的pygettext.py不支持。
pygettext.py是python在tools目录下自带的一个模块,可以用它来从python源码中抽取翻译字符串,它支持命令行,代码也不算很复杂。所以在uliweb中提供了纯python的命令行工具。不过uliweb为了让其可以支持模板和ini文件,修改了pygettext源码,所以和python自带的还不完全一样。许多其它的python项目是使用xgettext工具来处理。因为pygettext.py不支持复数的翻译串,我查了一下,主要区别就是对于复数,在po文件中是这样的:
msgid "month"
msgid_plural "months"
msgstr[0] "月"
msgid "month"
msgstr "月"
