如何配置 poedit 从 xml 文件中提取字符串?
我在 .xml 中有 Zend Framework 导航项,如下所示:
<entry-i>
<label>Text to translate</label>
<params>
...
<params>
<entry-i>
我希望 poedit 只读取来自<label>
s 的消息。
如何配置 poedit 从 xml 文件中提取字符串?
我在 .xml 中有 Zend Framework 导航项,如下所示:
<entry-i>
<label>Text to translate</label>
<params>
...
<params>
<entry-i>
我希望 poedit 只读取来自<label>
s 的消息。
我也一直在寻找解决方案,我刚刚开始工作!
在 Poedit(我有 1.4.2)中,添加一个Edit > Preferences
具有以下属性的新解析器():
XML
*.xml
xgettext --force-po -o %o %C %K %F -L glade
-k%k
%f
--from-code=%c
在您的翻译项目中,将label
和添加title
到您的关键字列表并更新目录。
上述滥用Glade提取器来解析非 Glade XML 文件的建议是错误的。它永远不会运作良好(例如:这里有一些评论)。当然,在 2010 年有总比没有好。
从 gettext 0.19.7 开始(自 1.8.7 起与 Poedit 捆绑在一起),有一个更好的方法:gettext 现在通过ITS 规则为自定义 XML 文件提供内置支持。
从自定义 XML 文件中提取字符串的最佳方法是
-L glade
。.its
和文件的位置。.loc
对于在 Windows 上遇到 Poedit 配置问题的任何人,特别是如果您收到一条错误消息,指出 glade 和 expat 不可用,请将提供的 xgettext.exe 替换为 gnuwin32 项目中的当前一个:
http://gnuwin32.sourceforge.net/packages/gettext.htm
您需要下载二进制文件和依赖项。但是,只有二进制 xgettext.exe 必须提取和相关文件(只需运行它,它会告诉您缺少什么)
看起来 PoEdit 还不支持 XML。
我创建了一个小 php 脚本,将标签提取到 .php 文件,PoEdit 确实可以理解。
$xml = simplexml_load_file("../application/configs/navigation.xml")
or die("Error: Cannot open XML file");
echo '<?';
foreach($xml->xpath('//label') as $label){
echo 'echo _("'.$label.'");'. PHP_EOL;
}
效果很好!!我在 Windows 7 中使用 Poedit 1.4.6 发现了“不支持 glade”的问题,但我通过下载最后的 gnuwin32 二进制文件和依赖项来修复,如 user496209 所说。不要下载完整包,因为 PoEdit 带有自己的 gettext 库,因此只需下载二进制文件和依赖项并将请求的文件替换到 poedit 文件夹中。