Django makemessage 可以生成 i18n 文件,并且更容易翻译。
如我所见,tornado 支持 CSV 格式和 gettext 格式,但我只能使用 CSV 版本,因为我将在 appengine 使用它。
因此,我正在寻找一种基于扫描我的代码和模板为龙卷风生成这些 CSV 文件的方法。
Django makemessage 可以生成 i18n 文件,并且更容易翻译。
如我所见,tornado 支持 CSV 格式和 gettext 格式,但我只能使用 CSV 版本,因为我将在 appengine 使用它。
因此,我正在寻找一种基于扫描我的代码和模板为龙卷风生成这些 CSV 文件的方法。
好吧,我觉得你有点困惑。您可以在 appengine 中使用 gettext 和 po/mo 文件,因为 gettext 是从 Google 的 django.util 实现中导出的(可以在google-appengine google group中找到对此的讨论):
from django.utils.translation import gettext as _
我不熟悉 AppEngine CSV 的 i18n 格式,但是有一种非常简单的方法可以使用xgettext从 tornado 的代码和模板中提取国际化字符串,基本上只是从命令行强制 python。举个例子:
xgettext -L Python -o myproject.pot *.html
该命令将从您当前目录中的 *.html 中获取所有 i18n'ed 字符串,并将它们放在 myproject.pot 中。您可以使用任何商业或开源工具(我推荐poedit或pootle)初始化该文件并翻译为 ./it_IT/myproject.po ,一旦您翻译了所有字符串,您可以使用Translate Toolkit 的 po2csv将文件转换为 CVS ,这也是用python编写的:
po2csv -i it_IT/myproject.po -o it_IT/myproject.csv
该格式location:codeLine,source,target
非常简单,很容易转换为您需要的任何其他格式(我不熟悉 appengine 的 i18n CSV 格式),您可以不带 -o 参数调用 po2csv 并将输出从 STDOUT 输出。
我不知道这是否能解决您的问题,但基本上我认为您应该采用 code->pot/po->csv 工作流程,因为有许多工具需要 po/pot/mo 并允许您处理翻译或使用翻译记忆库/拼写检查器等。如果您需要更多帮助,请尝试让我知道。
我为此目的编写了一个名为tornado-babel的新模块,其中包括一个用于 babel 的提取器,用于从 tornado 模板中提取可翻译的字符串。它不会为您创建 CSV 文件,而是创建标准的 pot 文件。