【问题标题】:Swap main code language with translation用翻译交换主要代码语言
【发布时间】:2013-08-09 09:18:58
【问题描述】:

现在我的代码和模板中有字符串(全部显示给用户)波兰语,我在语言环境的 .po 文件中翻译成英语(该文件是使用标准 Django 翻译工具生成的,然后填充)。 我如何交换这些语言,以便在代码中使用英语? 反转 .po 很容易(po2csv,交换 Calc 中的列,csv2po),唯一的问题是如何将翻译传播到代码中以成为主要语言。

我能看到的解决方案:

  1. 编写一个脚本,该脚本将从 .po 和 sed 项目中的每个文件中获取每一对(它不适用于包含变量的块传输,它需要一些工作)
  2. 手动更改这些字符串(大量工作)

有没有更快的方法?

【问题讨论】:

  • 我会说 1. 会更快,但您必须检查所有内容以确保您没有做错任何事情。并且记住在未来总是用英语编码。祝你好运
  • 最后两个人会检查,因为我使用“git add -p”并且我们进行代码修改。至于用英语编码 - 我总是这样做。这都是关于将向用户显示的字符串,无论是在代码中还是在模板中。

标签: python django translation swap


【解决方案1】:

我猜一个可能性是使用ast模块来读取你的Python代码的语法树,检查所有标记为翻译的字符串,将它们与你的po文件中的相应字符串匹配,修改相应的ast节点并写回修改后的代码。首先,Eli Bendersky 有一篇很好的文章,介绍了如何使用 ast 模块的 NodeVisitor 类:

模块本身的文档很少,但也包含一些有用的信息:

另外,还有一些关于 SO 的有见地的问题,处理类似的问题:

如果编写 ast 解析器值得付出努力,当然取决于您必须替换多少个字符串:假设您需要 4 个小时来编写脚本并且您能够手动替换 5 个字符串/分钟,那么收支平衡将是大约 1200 个字符串。

【讨论】:

  • 如果我在 .html 模板中的翻译没有同样的问题,那将是一个很好的解决方案。
猜你喜欢
  • 2011-06-09
  • 2014-12-21
  • 2016-06-25
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
相关资源
最近更新 更多