是否可以从Sphinx文档生成单个.pot文件?

时间:2013-03-14 11:45:24

标签: python localization internationalization gettext python-sphinx

我正在接受i18n / l10n大型项目文件的任务。文档是使用Sphinx完成的,它具有现成的basic support for i18n

我的问题类似于this other question的问题:即每个pot文件的大块字符串是相同的,我希望我的译员不要一次又一次地重新输入相同的翻译。 我宁愿拥有一个模板文件

我的问题并不是真正合并文件(仅仅是msgcat *.pot > all.pot),而是 - 在使用特定语言构建文档时,域可以正常工作 - 我必须复制和重命名all.pot返回原始文件名。所以我的工作方式是:

  1. 生成fileA.potfileB.pot
  2. 将两者合并为all.pot
  3. cp all.pot fileA.pot + cp all.pot fileB.pot
  4. 有更清洁的方法吗? gettext_compact只让我的目标只有一半......

2 个答案:

答案 0 :(得分:3)

经过7个多月的广泛研究和一些尝试的答案,似乎可以肯定地说没有 - 至少在目前的1.1.3版本中 - 不可能生成单个{{1}来自Sphinx文档的文件

原始问题中描述的解决方法也是在将不同的.pot文件合并为一个文件时自动删除重复字符串的最简单方法。

答案 1 :(得分:0)

我在这里看到两种可能性:

一个是攻击Sphinx根本不使用域名...我猜你不会因为几个原因而想做。

另一个是:由于您按域分割,msggrep的-M选项看起来就像您需要做的那样。否则,-N选项仍可用于按源文件进行过滤。

也就是说,如果明显的解决方案不起作用:

  • 生成fileA.pot,fileB.pot(此处也查看msguniq
  • 将它们合并到all.pot并将其交给译员
  • for x in file*.pot; do msgmerge -o ${x%t} all-translated.po $x; done

根据TFM,msgmerge只从第一个参数(翻译的po文件)中获取(假设更新的)翻译,该翻译与第二个参数的最新源位置匹配(具有旧翻译的po文件) ,或者pot file =只有空msgstrings的模板。)