我正在寻找i18ndude的改进版本(已经检查了v3.2.2),或者某种后续版本。i18ndude从Python代码(使用pygettext)和Zope页面模板中提取可翻译的字符串,但它有点难以实现:
- 它隐藏了pygettext的命令行选项,从而使不可能在不破解代码的情况下指定关键字
- 它很难理解,也很难扩展(例如,人们可能希望以某种方式添加对Javascript文件的解析)
- 命令行语法很麻烦(例如“i18ndude merge--pot…”。。。--合并。。。--合并2…)
- 有些文件没有被解析或以错误的方式解析,导致一些字符串找不到(例如,每个名为“*pt”的文件都被认为是HTML,甚至“*”。xml.pt"). 在
- 开发似乎在2010年结束。在
有东西就好了
- 有更好的命令行界面,比如Subversion,支持“command”和“help command”
- 易于扩展
- 易于配置(例如,使用哪个解析器解析什么类型的文件,或者如何判断文件的类型,例如svn:mime类型属性考虑在内)
由于命令行接口可能与i18ndude的接口不兼容,我认为最好还是换一个。在
现在有没有人编写了这样的工具并愿意分享它,或者这是一个有待完成的任务?在
Tags:
你试过Babel吗?它支持从不同来源提取消息的插件系统。在
lingua为ZPT和zope.i18nmessageid提供了插件,为您提供了i18ndude的所有功能,但是有一个相当活跃的开源社区。在
要在项目中使用babel,您需要configure your setup.py to use babel commands,然后将这些函数作为设置.py命令;例如
python yourpackage/setup.py extract_messages
。在如果
lingua
egg是可用的依赖项,那么您可以将它的插件放在您的message_extractors
结构中设置.py告诉Babel如何从源文件中提取i18n消息:请注意,您不能将Babel作为setup-required-dependency,因为设置.py如果巴别塔真的能用的话,它就可以导入了!您可以尝试通过为cmdclass条目创建垫片来解决这个问题,但我自己还没有尝试过。现在,只需在你的virtualenv或全球范围内安装Babel蛋。在
如果要使用
^{pr2}$mapping-file
CLI选项而不是message_extractors
条目,那么该选项需要一个带有[method fileglob]
头的INI样式的文件格式:每个部分都可以包含要传递给extractor函数的选项(每个
option = value
行在传递给它的options dict中成为一个键值对),但我不认为lingua*方法有任何选项。在然后,提取器配置将用于您在命令行中提到的每个输入目录,或设置.py
packages
选项。在相关问题 更多 >
编程相关推荐