-- 修改后的问题 --
感谢所有提供潜在解决方案的人,但这些都与我已经尝试过的相同,所以我认为我应该更清楚。我扩展了XML,以使问题更加透明。
XML实际上是各种文件的编译,包含翻译内容,目的是获得一个统一的文档,只包含唯一的英语字符串,以及(经手动审核和清理后)每个字符串的单个翻译版本,因此它可以用于翻译记忆。这就是为什么它现在是一个带有大量冗余信息的大文件。
每个段落行都包含英语主控(可以在文件中重复几十次)和翻译变体。在很多情况下,这很容易,因为所有翻译版本都相等,所以我最终会得到一行,但在其他情况下可能会更加复杂。
因此,假设今天我有10个段落行,其中包含相同的英语内容(#1),2个不同的德语变体,3个不同的法语变体,以及其余语言环境只有一个变体,我需要获得:
1个段落包含:1个英语/ 2个德语(v1和v2)/ 3个法语(v1,v2和v3)/ ...
并且对于我的列表中的每个分组唯一英语值都要重复此过程。
修改后的XML:
<Books>
<!--First English String (#1) with number of potential translations -->
<Para>
<EN>English Content #1</EN>
<DE>German Trans of #1 v1</DE>
<FR>French Trans of #1 v1</FR>
<!-- More locales here -->
</Para>
<Para>
<EN>English Content #1</EN>
<DE>German Trans of #1 v2</DE>
<FR>French Trans of #1 v1</FR>
<!-- More locales here -->
</Para>
<Para>
<EN>English Content #1</EN>
<DE>German Trans of #1 v1</DE>
<FR>French Trans of #1 v2</FR>
<!-- More locales here -->
</Para>
<!--Second English String (#2) with number of potential translations -->
<Para>
<EN>English Content #2</EN>
<DE>German Trans of #2 v1</DE>
<FR>French Trans of #2 v1</FR>
<!-- More locales here -->
</Para>
<Para>
<EN>English Content #2</EN>
<DE>German Trans of #2 v3</DE>
<FR>French Trans of #2 v1</FR>
<!-- More locales here -->
</Para>
<Para>
<EN>English Content #2</EN>
<DE>German Trans of #2 v2</DE>
<FR>French Trans of #2 v1</FR>
<!-- More locales here -->
</Para>
<!--Loads of additional English Strings (#3 ~ #n) with number of potential translations -->
当前的解决方案为我提供以下输出
<Books>
<Para>
<EN>English Content #1</EN>
<DE>German Trans of #1 v1</DE>
<DE>German Trans of #1 v2</DE>
<DE>German Trans of #2 v1</DE>
<DE>German Trans of #2 v3</DE>
<DE>German Trans of #2 v2</DE>
<FR>French Trans of #1 v1</FR>
<FR>French Trans of #1 v1</FR>
<FR>French Trans of #1 v2</FR>
<FR>French Trans of #2 v1</FR>
</Para>
</Books>
因此,只需拿取第一个EN标签,然后将所有其他标签分组,无论英语主字符串之间的差异如何。而我的目的是获得以下结果:
<Books>
<!-- First Grouped EN string and linked grouped translations -->
<Para>
<EN>English Content #1</EN>
<DE>German Trans of #1 v1</DE>
<DE>German Trans of #1 v2</DE>
<FR>French Trans of #1 v1</FR>
<FR>French Trans of #1 v2</FR>
</Para>
<!-- Second Grouped EN string and linked grouped translations -->
<Para>
<EN>English Content #2</EN>
<DE>German Trans of #2 v1</DE>
<DE>German Trans of #2 v3</DE>
<DE>German Trans of #2 v2</DE>
<FR>French Trans of #2 v1</FR>
</Para>
<!-- 3d to n Grouped EN string and linked grouped translations -->
</Books>