Uliweb

Limodou 写的一个开发框架 ...

↑我也要推荐

国际化复数形式的支持与pygettext的补丁

发布时间:2011-09-12 20:00:28, 关注:+4801, 赞美:+7, 不爽:+9

本文标签: pygettext

原始出处: limodou的学习生活

今天把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] "月"

msgstr[1] ""
而不带复数的形式是这样的:

msgid "month"

msgstr "月"

本来想自已修改的,不过还是先google一下吧,万一有人解决了呢。结果还真找到了。有人在python的bugs网站上提交过这样的问题,然后有人给出了一个补丁。从pygettext.py的源码可以看到,它已经很多看没有被修改过了。于是我下载了补丁,先在python带的版本上打补丁,然后使用代码比较工具将我需要的修改再加进去。后来还修改了po_merge.py程序。最终把这个问题基本上算是解决了。

 

如果你觉得本站对你有帮助,欢迎向本站赞助 :P

使用支付宝捐赠

Copyright© Python4cn(news, jobs) simple-is-better.com, 技术驱动:powered by web.py 空间主机:Webfaction

版权申明:文章转载已注明出处,如有疑问请来信咨询。本站为 python 语言推广公益网站,与 python 官方没有任何关系。

联系/投搞/留言: en.simple.is.better@gmail.com 向本站捐赠