【问题标题】:Has someone a script to extract specific strings from XML files to allow to translate them via CSV or PO files有人有一个脚本可以从 XML 文件中提取特定字符串,以便通过 CSV 或 PO 文件进行翻译
【发布时间】:2012-12-17 23:29:56
【问题描述】:

这是我在这里的第一个问题,通常我会提供答案;-)

好吧,我正在寻找一个脚本来提取一些特定的字符串,这些字符串设置为 system.xml、布局 xml 文件或 Magento 用来翻译它们的类似文件。示例:标签、菜单项或其他。

借助 gettext,我有一个脚本可以从 php 和 phtml 文件中提取它们并将它们转换为可移植对象文件,然后,借助 OmegaT 软件,我使用 PO 文件来翻译字符串,最后我还有一个 PHP CLI将翻译后的文件从 PO 转换为 CSV 文件的脚本。

Magento 通过使用模块和提供的元素信息来翻译这些 xml 文件,这要归功于属性 "translate='element_to_translate'""module='mymodule'" 通过帮助器在内部放置在元素(例如块或操作)中。

这里是一个我想提取的 xml 代码示例,以便我翻译它。在这里,由于模块“sales”,我想翻译元素“label”的值,正如您在下面看到的 XML 代码中的属性可能有助于提取此信息:

<customer_account>
        <reference name="customer_account_navigation" >
            <action method="addLink" translate="label" module="sales"><name>billing_agreements</name><path>sales/billing_agreement/</path><label>Billing Agreements</label></action>

或其他示例:

<block type="customer/account_navigation" name="customer_account_navigation" before="-" template="customer/account/navigation.phtml">
                <action method="addLink" translate="label" module="customer"><name>account</name><path>customer/account/</path><label>Account Dashboard</label></action>
                <action method="addLink" translate="label" module="customer"><name>account_edit</name><path>customer/account/edit/</path><label>Account Information</label></action>
                <action method="addLink" translate="label" module="customer"><name>address_book</name><path>customer/address/</path><label>Address Book</label></action>
            </block>
        </reference>
</customer_account>

因此,如果有人有一个允许提取它们的脚本,那就太好了。老实说,我没有时间创建这样的脚本,因为我已经花费了大量时间来创建整个翻译过程,这仍然很复杂。但是,如果有人已经完成了这项工作,那么在这里分享它会很棒。 但是,如果人们搜索脚本以进行从 CSV 到 PO 的转换并进行反向转换,我可以提供帮助,尽管它可以在网络上获得资助。与原始版本相比,我只是做了一些外观上的更改。

感谢您的反馈。

【问题讨论】:

    标签: xml magento translation gettext po


    【解决方案1】:

    我制作了一个模块,用于提取字符串以直接转换为 Magento 格式的 csv 文件。如果我没记错的话,它会处理配置和系统 xml,但不确定布局。
    试一试并随时改进它:)

    https://bitbucket.org/OSdave/languagecsv

    【讨论】:

    • 感谢您的反馈。我去看看
    • 嗨,它与我要找的非常接近。它为 system.xml 文件进行翻译。我还需要布局 xml 文件,但基本都在那里,我会改进它并将其分享到您的存储库中。我已经做了一些美容改进。谢谢。完成后我会将此回复设置为答案。
    • 很高兴您发现它很有用。让我知道我是否可以在模块方面提供帮助
    • 事实上,我帮助了 ;-) 查看你的 git repo。由于解析了 config.xml 文件,我对其进行了更改,以使用模块文件夹中包含的所有 xml 文件以及模块使用的所有布局 XML 文件。您的模块帮助我制作了一个满足我需求的模块。谢谢
    【解决方案2】:

    查看 Bryan Schnabel 的 XML - XLIFF 往返工具:http://sourceforge.net/projects/xliffroundtrip/

    xliffRoundTrip 自动执行任何 XML 文件和 XLIFF 之间的往返。 它由 2 个 XSL 文件 + Java 源代码组成。第一个将 XML 转换为 XLIFF。第二次将 XLIFF 转换回原始 XML,即 对 XLIFF 文件进行语言翻译后。

    Bryan 是 OASIS XLIFF 技术通讯的长期成员。

    【讨论】:

    • 感谢您的反馈。这是一个有趣的工具,是的,我可以将 XLIFF 文件用于 OmegaT。 @OSDave 提供的解决方案似乎更适合 Magento。它绝对有助于以简单的方式翻译 Magento 模块。您的解决方案也是一个不错的选择。
    【解决方案3】:

    市面上有专业的翻译工具,例如 SDL Trados 可以做这些事情。 使用 trados,您不会将其转换为 csv,而是转换为 xliff,这是翻译文件的标准格式。

    【讨论】:

    • 您好,感谢您的反馈。我不是在寻找翻译字符串的软件。我搜索了一种从 Magento 格式化的 XML 文件中提取字符串的方法,就像在我的示例中一样,以使用我最喜欢的翻译软件。我认为 SDL Trados 做不到。
    • 您最喜欢的翻译软件是什么? Trados 可以导出 XLIFF 文件。
    • 它是 OmegaT,但我明白你的意思,你是对的,但这并不是我想要的。我的意思是有一个额外的格式,然后合并到一个 PO 文件中(我的代码中有其他字符串与 XML 字符串合并),然后转换为 CSV 文件。它使更多的工作和机会遇到一些特殊字符串的问题。 Doug 提供了一个免费的解决方案,它是一个与 Trados 具有相同目的的非商业软件。正如我对 Doug 所说,我更喜欢 @OSDave 的解决方案,因为我使用 Magento 并且他的模块将我需要的几乎所有内容提取到 CSV 文件中。
    【解决方案4】:

    SDL Trados Studio 允许您创建自定义规则来处理 xml 文件。 SDL 称它们为“文件类型”。在此处查看基本介绍:http://producthelp.sdl.com/kb/Articles/5274.html

    文件类型允许您指定哪些元素和属性是(不可)翻译的。

    SDL Trados Studio 不允许您根据父元素中的属性评估元素的“可翻译性”。

    换句话说:

    • 如果您总是需要翻译标签元素:如果您创建文件类型,SDL Trados Studio 可以处理它。 action 元素的 translate 属性没用。
    • 如果您并不总是需要翻译标签元素,而是希望根据 translate 属性对其进行评估,那么您确实需要一个脚本来进行预处理(以及之后的后处理)。但是由于您正在构建自己的 xml 文件,我想您可以构建它,以便可翻译的内容位于可识别的元素中。

    如果您正在寻找免费的解决方案,请查看 Memsource。它们允许完全相同的原理,但我对确切的过程不太熟悉。

    【讨论】:

      猜你喜欢
      • 2013-10-25
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 2012-06-28
      • 2021-08-17
      相关资源
      最近更新 更多