poedit 和 xml 文件

Posted

技术标签:

【中文标题】poedit 和 xml 文件【英文标题】:poedit and xml files 【发布时间】:2011-11-17 22:57:53 【问题描述】:

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

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

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

我希望 poedit 只读取来自&lt;label&gt;s 的消息。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

我也一直在寻找解决方案,我刚刚得到它的工作!

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

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

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

【讨论】:

抱歉,这对我不起作用,我已按照说明操作,但无法打开 XML 文件。 嗨,有没有办法用这个配置翻译属性 title="Text to translate" ?谢谢 你好,我也想知道XML属性是否可以解析?有任何想法吗?谢谢【参考方案3】:

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

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

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

【讨论】:

请注意,这不再需要,从 Poedit 1.6 左右开始。当前版本是在启用 xgettext 中的所有内容的情况下构建的。【参考方案4】:

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

【讨论】:

【参考方案5】:

上述滥用 Glade 提取器来解析 non-Glade XML 文件的建议是错误的。它永远不会运作良好(例如:这里有一些 cmets)。当然,这比 2010 年的什么都没有要好。

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

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

    为您的扩展添加一个自定义提取器,指定标准 gettext 调用,没有-L glade 位。 Write ITS rules 用于您的文件格式。 将它们放在 Poedit 安装中其他 .its.loc 文件的位置。

【讨论】:

以上是关于poedit 和 xml 文件的主要内容,如果未能解决你的问题,请参考以下文章

打开po文件时poEdit编码错误

如何使用 poedit 从 js 文件生成 po 文件

使用 Poedit 创建 POT 文件

Poedit:Html/Html5 文件的“源代码不可用错误”

poedit 显示似乎无法修复的错误

如何在 Poedit 中设置 gettext 文本域?