如何枚举区域设置域中的所有字符串键


How to enumerate all string keys in locale domain?

程序的翻译字符串存储在.po/中的服务器上。mo文件。我们需要将翻译导出为XML。似乎自然的方法是编写一个小的PHP脚本,在标签中打印字符串,如

<s key="apple" value="яблоко"/>
<s key="orange" value="апельсин"/>

当你知道.po/中的所有键时就很容易了。mo文件。设置域,设置语言环境并使用gettext()。

但是我没有找到一个函数来枚举域中的所有字符串。我能想到的唯一选择是手动列出所有翻译键以完成工作。我太懒了,不适合这份工作。

是否有一种方法枚举域中的所有翻译键?

.mo文件是二进制文件,据我所知,它实际上并不存储msgid,而是一个易于访问的索引版本。

.po文件是简单的文本文件,其中列出了所有的msgid s,易于解析与#msgid "([^"]+)#的正则表达式