poedit 和 xml 文件

发布于 2024-12-04 18:24:08 字数 293 浏览 5 评论 0原文

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

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

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

我希望 poedit 仅读取来自 的消息。

How to configure poedit to extract strings from xml file?

I have Zend Framework navigation items in .xml like this:

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

And I want poedit to read just messages from <label>s.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

恰似旧人归 2024-12-11 18:24:08

我也一直在寻找解决方案,并且刚刚让它发挥作用!

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

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

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

I have been searching for a solution as well, and I have just gotten it to work!

In Poedit (I have 1.4.2), add a new parser (Edit > Preferences) with the following properties:

  • Language: XML
  • List of extensions separated by semicolons (e.g. .cpp;.h): *.xml
  • Parser command: xgettext --force-po -o %o %C %K %F -L glade
  • An item in keywords list: -k%k
  • An item in input files list: %f
  • Source code charset: --from-code=%c

In your translation project, add label and title to your keyword list and update the catalog.

忆梦 2024-12-11 18:24:08

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

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

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

  1. 使用您的扩展添加自定义提取器,指定标准 gettext 调用,-Lglade 位。
  2. 编写 ITS 规则对于您的文件格式。
  3. 将它们放在 Poedit 安装中其他 .its.loc 文件的位置。

The above advice to abuse the Glade extractor to parse non-Glade XML files is misguided. It’s never going to work well (case in point: some comments around here). Of course, it was better than nothing back in 2010.

Starting with gettext 0.19.7 (bundled with Poedit since 1.8.7), there’s a better way: there’s now builtin support in gettext for custom XML files via ITS rules.

The best way to extract strings from a custom XML file is to

  1. Add a custom extractor with your extension, specifying standard gettext invocation, without the -L glade bit.
  2. Write ITS rules for your file format.
  3. Put them in the location of other .its and .loc files in Poedit’s installation.
我早已燃尽 2024-12-11 18:24:08

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

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

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

For anyone running into problems with the configuration for Poedit on windows, specifically if you get an error message saying that glade and expat are not available, replace the supplied xgettext.exe with current one from the gnuwin32 project:

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

You need to download the binaries and the dependencies. However, only the binary xgettext.exe must be extracted and related files (just run it and it will tell you what is missing)

心病无药医 2024-12-11 18:24:08

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

Looks like PoEdit does not support XML yet.

I have created a little php script, to extract the labels to .php file,
which PoEdit does understand.

$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;
}
反差帅 2024-12-11 18:24:08

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

It worked great!! I found the problem about "glade not supported" using Poedit 1.4.6 in Windows 7 but I fixed by downloading last gnuwin32 binaries and dependencies as user496209 said. Don't download the complet package because PoEdit comes with its own gettext library, so just donwload binaries and dependencies and replace the requested files into the poedit folder.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文