5

Django makemessage 可以生成 i18n 文件,并且更容易翻译。

如我所见,tornado 支持 CSV 格式和 gettext 格式,但我只能使用 CSV 版本,因为我将在 appengine 使用它。

因此,我正在寻找一种基于扫描我的代码和模板为龙卷风生成这些 CSV 文件的方法。

4

2 回答 2

6

好吧,我觉得你有点困惑。您可以在 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 中。您可以使用任何商业或开源工具(我推荐poeditpootle)初始化该文件并翻译为 ./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 并允许您处理翻译或使用翻译记忆库/拼写检查器等。如果您需要更多帮助,请尝试让我知道。

于 2010-11-17T08:13:47.617 回答
0

我为此目的编写了一个名为tornado-babel的新模块,其中包括一个用于 babel 的提取器,用于从 tornado 模板中提取可翻译的字符串。它不会为您创建 CSV 文件,而是创建标准的 pot 文件。

于 2012-07-12T13:58:50.773 回答