代码之家  ›  专栏  ›  技术社区  ›  mac

有可能从Sphinx文档中生成一个.pot文件吗?

  •  7
  • mac  · 技术社区  · 13 年前

    我正在执行i18n/l10n的任务,这是一个大型项目的文档。文件是用斯芬克斯完成的,斯芬克斯是现成的 basic support for i18n .

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

    我的问题不是真正合并文件(这只是一个 msgcat *.pot > all.pot away),但事实是,为了让域在用特定语言构建文档时发挥作用,我必须复制并重命名 all.pot 返回到原始文件名。所以我的变通工作方式是:

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

    有没有更干净的方法可以做到这一点? gettext_compact 我只进了一半球。。。

    3 回复  |  直到 9 年前
        1
  •  3
  •   tshepang Arrie    12 年前

    经过7个多月的广泛研究和几次尝试的答案,似乎可以肯定地说没有——至少在当前版本1.1.3中是这样- 不可能生成单个 .pot 斯芬克斯文件 .

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

        2
  •  0
  •   mirabilos Jai Prakash Rai    12 年前

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

    一个是破解狮身人面像,使其完全不使用域名,我想出于几个原因你不会想这样做。

    另一个是:由于您按域划分 msggrep 看起来它完成了您需要做的事情。否则,-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文件=仅具有空msgstring的模板)。

        3
  •  0
  •   MD Mushfirat Mohaimin Asha Choudhary    4 年前

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

    gettext_compact = "docs"