如何自动翻译XML文件的某些节点?

时间:2013-06-05 07:16:44

标签: xml bash translation google-translate xmlstarlet

我需要在与此类似的文件(~45k行)中翻译<DefaultValue>标记:

<Resources>
  <Resource>
    <File>App_GlobalResources\Ecommerce_Modules.ascx.resx</File>
    <Key>ModuleTitle.ecTermsAndConds</Key>
    <DefaultValue>Terms And Conditions</DefaultValue>
    <Value>1</Value>
  </Resource>
  <Resource>
    <File>App_GlobalResources\Ecommerce_Modules.ascx.resx</File>
    <Key>ModuleTitle.ecStorefrontCatalogMenu</Key>
    <DefaultValue>Catalog Menu</DefaultValue>
    <Value>1</Value>
  </Resource>
...
</Resources>

我查看了Google Translator Toolkit,但它不支持任意XML。有一些付费服务,但目前谷歌翻译就足够了。

我可以使用xmlstarlet提取所有标记/文字,但如何通过翻译更新值?

xmlstarlet sel -t -m "/Resources/Resource" -c "./DefaultValue" -n ~/Downloads/Resources.xml

1 个答案:

答案 0 :(得分:1)

我使用curlown Bash scriptgoogle web translator创建我的xmlstarlet来解决此问题。

原理

我正在循环包含要翻译的文本的每个元素,调用翻译函数(例如Google翻译),并使用翻译更新输出文件中的给定元素。 因此,您需要在脚本文件中为表达式定义XPath:

# @description Xpath to each item is build as $xpath[i]/$i18nTag
xpath="/Resources/Resource"
i18nTag="DefaultValue"

然后运行:

./xml-translator.bash en fr ./input.xml

检查./input.fr.xml中的结果。

声明

  • 该项目不是一个开箱即用的解决方案 - 由谷歌服务条款 - 但应该在这个问题上有一个良好的开端。

存储库

github: XML-translator上查看。