7

我正在执行 i18n / l10n 大型项目文档的任务。文档是用 Sphinx 完成的,它对 i18n 有现成的基本支持

我的问题与另一个问题类似:即每个pot文件的大部分字符串都是相同的,我希望我的翻译人员不要一遍又一遍地重新输入相同的翻译。我宁愿有一个模板文件

我的问题并不是真正合并文件(这只是一个问题msgcat *.pot > all.pot),而是这样一个事实 - 为了在以特定语言构建文档时域工作 - 我必须复制并重命名all.pot回原始文件名。所以我的解决方法是:

  1. 生成fileA.pot,fileB.pot
  2. 将两者合并为all.pot
  3. cp all.pot fileA.pot+cp all.pot fileB.pot

有没有更清洁的方法来做同样的事情?gettext_compact只让我完成了我的目标的一半......

4

3 回答 3

3

经过 7 个多月的广泛研究和一些尝试的答案,似乎可以肯定地说不——至少在当前版本 1.1.3中——不可能.pot从 Sphinx 文档生成单个文件

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

于 2013-09-18T14:44:51.747 回答
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 = template with只有空的 msgstrings)。

于 2013-09-17T20:37:35.467 回答
0

将以下内容添加到您的conf.py:

gettext_compact = "docs"
于 2021-09-05T03:46:11.467 回答