4

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

我在 .xml 中有 Zend Framework 导航项,如下所示:

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

我希望 poedit 只读取来自<label>s 的消息。

4

5 回答 5

11

我也一直在寻找解决方案,我刚刚开始工作!

在 Poedit(我有 1.4.2)中,添加一个Edit > Preferences具有以下属性的新解析器():

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

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

于 2010-08-11T16:22:40.940 回答
3

上述滥用Glade提取器来解析非 Glade XML 文件的建议是错误的。它永远不会运作良好(例如:这里有一些评论)。当然,在 2010 年有总比没有好。

从 gettext 0.19.7 开始(自 1.8.7 起与 Poedit 捆绑在一起),有一个更好的方法:gettext 现在通过ITS 规则为自定义 XML 文件提供内置支持。

从自定义 XML 文件中提取字符串的最佳方法是

  1. 使用您的扩展添加自定义提取器,指定标准 gettext 调用,不带-L glade
  2. 为您的文件格式编写 ITS 规则
  3. 将它们放在Poedit 安装中其他.its和文件的位置。.loc
于 2016-05-18T09:17:58.197 回答
2

对于在 Windows 上遇到 Poedit 配置问题的任何人,特别是如果您收到一条错误消息,指出 glade 和 expat 不可用,请将提供的 xgettext.exe 替换为 gnuwin32 项目中的当前一个:

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

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

于 2010-11-03T16:56:45.843 回答
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;
}
于 2010-07-23T07:49:27.040 回答
0

效果很好!!我在 Windows 7 中使用 Poedit 1.4.6 发现了“不支持 glade”的问题,但我通过下载最后的 gnuwin32 二进制文件和依赖项来修复,如 user496209 所说。不要下载完整包,因为 PoEdit 带有自己的 gettext 库,因此只需下载二进制文件和依赖项并将请求的文件替换到 poedit 文件夹中。

于 2011-01-21T10:20:22.163 回答