TTX形式の翻訳用に用意されたjavaプロパティファイルから数千のxmlファイルが生成されています。それらにはかなりの変数が含まれています。私は翻訳者から保護する必要があります。変数は、数字の形をしているか、場合によっては中括弧のペアの間のテキストです。 {0}、{this}。xml要素内にテキストパターンを囲む方法(特定のxml要素の内部にある場合を除く)
私は、彼らがすでに属性でない場合、彼らはまだのような UT要素の内部テキストの一部ではない場合は、XML要素でこれらの変数を囲む必要があり:
<ut DisplayText="{0}"><{0}></ut>
マイ入力は、次のようになります。
<ut Type="start"DisplayText="string"><string></ut> text string {0}
<ut DisplayText="{1}"><{1}></ut> in:
<ut DisplayText="\n"><\n/></ut> {2}.
<ut Type="end" DisplayText="resource"></resource></ut>
正しい出力はこのようになります。
<ut Type="start"DisplayText="string"><string></ut> text string <ut DisplayText="{0}">{0}</ut>
<ut DisplayText="{1}"><{1}></ut> in:
<ut DisplayText="\n"><\n/></ut> <ut DisplayText="{2}">{2}</ut>.
<ut Type="end" DisplayText="resource"></resource></ut>
私の最初のアプローチは、正規表現を使用して中括弧内の用語にマッチさせ、パターン置換でその周りにxml要素を構築することでした。上記の最初のコードブロックのようにパターンが存在する場合、この方法は失敗します。
前を検索し、patters(メモ帳で++)を置き換える:
は
({[A-Za-z0-9]*})
を探すことが正規表現のように見え始めている
<ut DisplayText="\1">\1</ut>
を交換して仕事のための適切なツールではありません、だから私はより良いアプローチを取るためのいくつかの提案、さまざまなツール、または私がこれを迅速かつ反復的に解決することができるかもしれないより完全な正規表現さえしたいと思います。
更新:問題は、以前に想定されていたよりも少し複雑であることが判明しました。何らかの条件文のように見えるもので、変数をテキストと混合する、あまりにも明瞭でない構文を含む、保護が必要なものがいくつかあるようです。メモリから:
{o,choice|1#1 error|1<{0,number,integer} errors}
ここで、「エラー」と「エラー」は翻訳可能であり、保護すべきではありません。私たちが現在持っている最も簡単な解決策は、上記の正規表現を実行し、それが作成するエラーの奇妙な数を修正してから、より複雑なアイテムのパスを置き換えることです。それは、正規表現として抽象化することができますが、今はそれを行うことに多くのポイントはありません。
改良された式に加えて、より良い正規表現サポートを持つxsltや他のエディタへのポインタがありがたいです。時間が許せば、私はいくつかの選択肢を持った遊びをします。
私はこれをテストしませんでしたので、コメントに入れています---データフォーマットが統一されていれば、先読み/見栄えを使わないのはなぜですか? (?<!(= "))({[A-Za-z0-9] *})(?!") – Salty
正規表現でこれを行うことはできますが、Notepad ++ regexesでは実行できません。彼らは、ルックアバウトを含むいくつかの重要な機能を欠いています。あなたは何か他のものを使うことが可能でしょうか? EditPad Proの正規表現サポートは一流です。 –