如何从翻译的.po文件生成新的.pot模板

时间:2011-05-09 15:12:28

标签: php gettext xgettext

开始使用不完整的gettext .pot 文件后,生成的 .po 翻译文件现在包含大量原本不在 .pot 文件。

如何从已翻译的 .po 文件向后生成其他语言的 .pot 文件(包含空白翻译条目的字符串)?

感谢您的帮助。

7 个答案:

答案 0 :(得分:10)

您可以使用以下内容:

msgfilter -i xx.po -o new.pot true

msgfilter将程序应用于文件中的所有翻译,true只是一些不为任何输入输出任何内容的程序。

您可能需要在此之后按一下标题注释,使它看起来像一个新的POT文件。

答案 1 :(得分:2)

虽然@richhallstoke报告的命令适用于Linux和Mac

msgfilter -i xx.po -o new.pot true

在Windows上,这会失败,因为我们没有true命令。

我刚刚发布了执行此操作的online tool(等等):只需将浏览器拖放到.po文件中,点击"工具"图标,然后单击"转换为.pot"。

PS:该在线工具是FOSS:其源代码为on GitHub

答案 2 :(得分:1)

你没有。您从源代码生成.pot文件。 msgmerge然后获取新的.pot文件和现有的.po文件,并将旧条目合并到新文件中。

答案 3 :(得分:1)

这需要很长时间才能找到一种方法,但最后我找到了一个使用Notepad ++的解决方案。从搜索|替换... 菜单中,我能够使用正则表达式全部替换

查找:msgstr ".*"

替换为:msgstr ""

答案 4 :(得分:1)

我认为最干净的方法是使用Peter Eisentraut建议的解决方案:

msgfilter -i xx.po -o new.pot true

您还可以通过在最终--keep-header参数之前添加true来保留gettext标头。在这种情况下,您需要检查生成的标头,因为它可能包含特定于语言的指令(如复数规则的数量)。

对于Windows用户:为了使用这种方法,你需要一个类似于true的程序(也就是说,它除了运行succesflul之外什么都不做),就像我为此写的true for Windows一样原因。

答案 5 :(得分:0)

如果您想更新翻译字符串,则不需要.pot文件。从poedit:目录,从.pot文件更新,然后在浏览器窗口中将.pot文件更改为“所有文件”,选择你的.po文件,它将处理

答案 6 :(得分:0)

支持这个问题,这里是vim替换命令,用于通过翻译完整的.po文件制作.pot文件。

:%s​​ / msgid \ _。\ { - \} msgstr \(\("。" \ _。\) \)/ msgid \ 1msgstr&# 34;" \ R /