有没有办法生成类似于django makemessage的龙卷风本地化CSV文件?
Django的makemessage功能可以生成国际化文件,这样翻译起来就更简单了。
我看到tornado支持CSV格式和gettext格式,但我只能使用CSV版本,因为我会在appengine上使用它。
所以,我在寻找一种方法,可以通过扫描我的代码和模板来为tornado生成这些CSV文件。
2 个回答
我写了一个新的模块,叫做 tornado-babel,这个模块的目的是帮助提取可以翻译的字符串。它可以从tornado模板中提取这些字符串,但它不会为你生成CSV文件,而是会生成标准的pot文件。
好的,我觉得你有点困惑。你可以在AppEngine中使用gettext和po/mo文件,因为gettext是从Google的django.util实现中导出的(关于这个讨论可以在google-appengine google group找到):
from django.utils.translation import gettext as _
我对AppEngine的CSV国际化格式不太熟悉,但有一种非常简单的方法可以从tornado的代码和模板中提取国际化字符串,使用xgettext,基本上就是从命令行强制运行python。举个例子:
xgettext -L Python -o myproject.pot *.html
这个命令会从你当前目录下的所有*.html文件中获取所有国际化字符串,并把它们放到myproject.pot文件里。你可以用任何商业或开源工具初始化这个文件并翻译成比如说./it_IT/myproject.po(我推荐poedit或pootle),一旦你翻译完所有字符串,就可以使用Translate Toolkit的po2csv把文件转换成CSV格式,这个工具也是用python写的:
po2csv -i it_IT/myproject.po -o it_IT/myproject.csv
格式是location:codeLine,source,target
,这个格式很简单,也容易转换成你需要的其他格式(我对appengine的i18n CSV格式不太了解),你可以在调用po2csv时不加-o参数,直接从STDOUT输出。
我不知道这是否能解决你的问题,但基本上我认为你应该采用代码->pot/po->csv的工作流程,因为有很多工具需要po/pot/mo格式,这样可以帮助你处理翻译或使用翻译记忆/拼写检查等功能……试试看,如果你需要更多帮助,告诉我。