Poedit和XML文件

4

如何配置Poedit从xml文件中提取字符串?

我有一个类似以下的Zend Framework导航项目的.xml文件:

<entry-i>
    <label>Text to translate</label>
    <params>
       ...
    <params>
<entry-i>

我希望Poedit只读取
5个回答

11

我也一直在寻找解决方法,现在终于成功了!

在Poedit(我使用的是1.4.2版本)中添加一个新的解析器(编辑 > 首选项),并设置以下属性:

  • 语言:XML
  • 扩展名列表(用分号隔开,例如 .cpp;.h):*.xml
  • 解析器命令:xgettext --force-po -o %o %C %K %F -L glade
  • 关键字列表中的项目:-k%k
  • 输入文件列表中的项目:%f
  • 源代码字符集:--from-code=%c

在您的翻译项目中,将labeltitle添加到您的关键字列表中,并更新目录。


1
抱歉,对我来说它无法正常工作,我已经按照指示做了,但是我无法打开一个XML文件。 - antivirtel
1
你好,有没有办法在这个配置中翻译属性title="Text to translate"?谢谢。 - Michelangelo
1
嗨,我也在想能否解析XML属性?有什么想法吗?谢谢。 - Jay Gridley

3
上述建议滥用 Glade 提取器来解析非Glade XML文件是错误的。它永远不会很好地工作(例如:这里的一些评论)。当然,它比2010年的 nothing 要好。
从gettext 0.19.7开始(自Poedit 1.8.7起捆绑),有了更好的方法:现在gettext通过 ITS规则内置支持自定义XML文件。
从自定义XML文件中提取字符串的最佳方法是:
  1. 添加具有扩展名的自定义提取器,指定标准的gettext调用,不包括 -L glade 。
  2. 编写您的文件格式的ITS规则
  3. 将它们放在Poedit安装中其他 .its 和 .loc 文件的位置。

2
对于在Windows上配置Poedit时遇到问题的人,特别是如果您收到错误消息说glade和expat不可用,请使用gnuwin32项目中提供的当前xgettext.exe替换提供的xgettext.exe:

http://gnuwin32.sourceforge.net/packages/gettext.htm

您需要下载二进制文件和依赖项。但是,只需提取二进制xgettext.exe和相关文件(只需运行它,它就会告诉您缺少什么)


请注意,从Poedit 1.6开始,不再需要这个了。当前版本已经启用了xgettext中的所有内容。 - Václav Slavík

0

看起来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;
}

0

太好了!我在Windows 7上使用Poedit 1.4.6时发现了“glade不支持”的问题,但是我按照user496209的建议下载了最新的gnuwin32二进制文件和依赖项来解决了这个问题。不要下载完整的软件包,因为PoEdit自带其自己的gettext库,所以只需下载二进制文件和依赖项,并将请求的文件替换到poedit文件夹中即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接