Django makemessage 可以生成 i18n 文件,并且更容易翻译。
据我所知,tornado 已经同时支持 CSV 格式和 gettext 格式,但我只能使用 CSV 版本,因为我将在 appengine 中使用它。
因此,我正在寻找一种方法来根据扫描我的代码和模板为 Tornado 生成这些 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 中获取所有国际化字符串,并将它们放在 myproject.pot 中。您可以使用任何商业或开源工具(我会推荐 poedit 或 pootle )初始化该文件并翻译成比方说 ./it_IT/myproject.po ,一旦您翻译了所有字符串,您就可以使用 Translate Toolkit's po2csv 将文件转换为 CVS,这是也是用 python 写的:
po2csv -i it_IT/myproject.po -o it_IT/myproject.csv
格式是 location:codeLine,source,target
很简单,很容易转换成你需要的任何其他格式(我不熟悉 appengine 的 i18n CSV 格式),你可以调用 po2csv没有 -o 参数并通过管道将输出从 STDOUT 输出。
我不知道这是否能解决您的问题,但基本上我认为您应该采用 code->pot/po->csv 工作流程,因为有许多工具需要 po/pot/mo 并允许您处理您的翻译或使用翻译内存库/拼写检查器等...如果您需要更多帮助,请尝试告诉我。
关于python - 有什么方法可以像 django makemessage 一样生成 Tornado 本地化 CSV 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4103088/