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

pcrecxhr  于 2023-11-16  发布在  PHP
关注(0)|答案(8)|浏览(292)

从一个不完整的gettext**.pot文件开始,生成的.po翻译文件现在包含大量最初不在.pot文件中的翻译字符串。
如何从翻译后的
.po文件反向生成其他语言的.pot**文件(带有空白翻译条目的字符串)?
谢谢你的帮助。

unguejic

unguejic1#

你可以使用这样的东西:

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

字符串
msgfilter将程序应用于文件中的所有翻译,而true只是某个不为任何输入输出任何内容的程序。
在此之后,您可能需要稍微修改头注解,使其看起来像一个新的POT文件。

a11xaf1n

a11xaf1n2#

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

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

字符串
在Windows上,这会失败,因为我们没有true命令。
我刚刚发布了一个执行此操作的online tool(以及其他操作):只需在浏览器中拖放您的.po文件,点击“工具”图标并单击“转换为.pot”。
PS:那个在线工具是FOSS:它的源代码是on GitHub

fslejnso

fslejnso3#

这花了很长时间才找到一种方法,但最终我找到了一个解决方案,使用Notepad++。|Replace. * menu我可以用正则表达式 Replace All
查找:msgstr ".*"
替换为:msgstr ""

smdnsysy

smdnsysy4#

我认为,最干净的方法是使用Peter Schlentraut提出的解决方案:
第一个月
你也可以通过在最后一个true参数之前添加--keep-header来保留gettext头。在这种情况下,你需要检查结果头,因为它可能包含语言特定的指令(比如复数规则的数量)。
对于Windows用户:为了使用这种方法,你需要一个像true一样的程序(也就是说,它除了成功运行之外什么也不做),就像我为此编写的true for Windows一样。

yuvru6vn

yuvru6vn5#

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

fhity93d

fhity93d6#

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

lpwwtiir

lpwwtiir7#

下面是一个Vim替换命令,它可以从一个完整的.po文件转换成一个.pot文件。
:%s/msgid_.{-}msgstr \(\(“."_.\)\)/msgid \1msgstr“"\r/

kqqjbcuj

kqqjbcuj8#

在当前的PoEdit 3.4.1 for Windows中没有msgfilter.exe,但您可以使用xgettext.exe(您可以在...\Poedit\GettextTools\bin中找到它)从 .po 文件开始生成 .pot 文件:

  1. xgettext.exe -i xx.po -o new.pot

字符串

相关问题