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 只读取来自<label>
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 > Preferences
):
XML
以分号分隔的扩展名列表(例如 .cpp;.h):*.xml
解析器命令:xgettext --force-po -o %o %C %K %F -L glade
关键字列表中的一项:-k%k
输入文件列表中的一项:%f
源代码字符集:--from-code=%c
在您的翻译项目中,将label
和title
添加到您的关键字列表并更新目录。
【讨论】:
抱歉,这对我不起作用,我已按照说明操作,但无法打开 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 文件的主要内容,如果未能解决你的问题,请参考以下文章