TMX (xml ベースの翻訳メモリ ファイル) からデータを抽出しています。ファイルは次のようになります (<tu>
エントリは複数あり、翻訳された文字列ごとに 1 つです)。
<?xml version="1.0" encoding="utf-8"?>
<tmx version="1.4">
<header creationtool="Multilizer" creationtoolversion="6.2.19" datatype="PlainText" segtype="sentence" adminlang="en" srclang="*all*" o-tmf="MLProject">
</header>
<body>
<tu>
<prop type="context">..\..\BuildProcess\Support_Files\CommonFiles\PSRIP\AlambicEdit.dll.Strings.126.2000</prop>
<tuv xml:lang="en-CA">
<seg>Error initializing library: %s.</seg>
</tuv>
<tuv xml:lang="en">
<prop type="status">tsQAed</prop>
<seg>Error initializing library: %s.</seg>
</tuv>
<tuv xml:lang="fr">
<prop type="status">tsQAed</prop>
<seg>Erreur lors de l'initialisation de la librairie %s.</seg>
</tuv>
<tuv xml:lang="de">
<prop type="status">tsQAed</prop>
<seg>Fehler bei der Initialisierung der Bibliothek: %s.</seg>
</tuv>
<tuv xml:lang="es">
<prop type="status">tsQAed</prop>
<seg>Error inicializando biblioteca: %s.</seg>
</tuv>
<tuv xml:lang="it">
<prop type="status">tsQAed</prop>
<seg>Errore di inizializzazione libreria: %s.</seg>
</tuv>
<tuv xml:lang="ja">
<prop type="status">tsQAed</prop>
<seg>ライブラリ初期化時のエラー: %s</seg>
</tuv>
<tuv xml:lang="zh-CN">
<prop type="status">tsQAed</prop>
<seg>初始化库时出错:%s。</seg>
</tuv>
<tuv xml:lang="pt">
<prop type="status">tsQAed</prop>
<seg>Erro ao inicializar biblioteca: %s.</seg>
</tuv>
</tu>
</body>
</tmx>
特定の言語を特定の順序で抽出する必要がありますが、これは TMX では常に尊重されるわけではありません。たとえば、DE 言語と ES 言語が逆になることがあります。
残念ながら、プロパティの値によって子要素を取得する方法が見つからないため、 のようなことはできませんsegment = x.getElementsByPropertyValue("xml:lang", "en")
。これは本当にすばらしいことです。
私が見つけた唯一の代替手段は、すべての言語をループして、適切にソートされた言語配列と照合することでした (10 個の異なるファイルに 600k 以上のエントリがあると、非常に遅くなります)。
私が見逃している明らかなものはありますか?そのような方法はありますか?
注: 私は WSH Javascript を使用しているため、WSH で利用可能な任意の ActiveXObject にアクセスできます...