开始使用不完整的gettext .pot 文件后,生成的 .po 翻译文件现在包含大量原本不在 .pot 文件。
如何从已翻译的 .po 文件向后生成其他语言的 .pot 文件(包含空白翻译条目的字符串)?
感谢您的帮助。
答案 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 /