我正在接受i18n / l10n大型项目文件的任务。文档是使用Sphinx完成的,它具有现成的basic support for i18n。
我的问题类似于this other question的问题:即每个pot文件的大块字符串是相同的,我希望我的译员不要一次又一次地重新输入相同的翻译。 我宁愿拥有一个模板文件。
我的问题并不是真正合并文件(仅仅是msgcat *.pot > all.pot
),而是 - 在使用特定语言构建文档时,域可以正常工作 - 我必须复制和重命名all.pot
返回原始文件名。所以我的工作方式是:
fileA.pot
,fileB.pot
all.pot
cp all.pot fileA.pot
+ cp all.pot fileB.pot
有更清洁的方法吗? gettext_compact只让我的目标只有一半......
答案 0 :(得分:3)
经过7个多月的广泛研究和一些尝试的答案,似乎可以肯定地说没有 - 至少在目前的1.1.3版本中 - 不可能生成单个{{1}来自Sphinx文档的文件。
原始问题中描述的解决方法也是在将不同的.pot
文件合并为一个文件时自动删除重复字符串的最简单方法。
答案 1 :(得分:0)
我在这里看到两种可能性:
一个是攻击Sphinx根本不使用域名...我猜你不会因为几个原因而想做。
另一个是:由于您按域分割,msggrep的-M选项看起来就像您需要做的那样。否则,-N选项仍可用于按源文件进行过滤。
也就是说,如果明显的解决方案不起作用:
for x in file*.pot; do msgmerge -o ${x%t} all-translated.po $x; done
根据TFM,msgmerge只从第一个参数(翻译的po文件)中获取(假设更新的)翻译,该翻译与第二个参数的最新源位置匹配(具有旧翻译的po文件) ,或者pot file =只有空msgstrings的模板。)