1

XML データを XSL-FO に変換する XSLT スタイルシートがあります (これは、Apache FOP を使用して PDF としてレンダリングされます)。

ここで、出力をいくつかの異なる言語にローカライズする必要があります。たとえば、XSLT によって生成されたテーブルの列ヘッダーはローカライズする必要があります。以下は、列キャプション"Date""Name"、および"Something"を含むテーブル ヘッダーを生成する XSLT の簡略化されたスニペットです。

  ...
  <fo:table>
    <fo:table-header>
      <fo:table-row>
        <fo:table-cell>
          <fo:block>Date</fo:block>
        </fo:table-cell>
        <fo:table-cell>
          <fo:block>Name</fo:block>
        </fo:table-cell>
        <fo:table-cell>
          </fo:block>Something</fo:block>
        </fo:table-cell>
      </fo:table-row>
    </fo:table-header>
    </fo:table-body>
      <xsl:apply-templates select="item"/>
    </fo:table-body>
   </fo:table>
  ...

すでにシステムの他の部分で国際化のためにTMXファイルを使用しているので、それは自然な方法のように思えます。2 つの言語の文字列をいくつか含む TMX ファイルの簡単な例を次に示します。

<tmx version="1.4b">
  <body>
    <tu tuid="DATE">
      <tuv xml:lang="en"><seg>Date</seg></tuv>
      <tuv xml:lang="sv"><seg>Datum</seg></tuv>
    </tu>
    <tu tuid="NAME">
      <tuv xml:lang="en"><seg>Name</seg></tuv>
      <tuv xml:lang="sv"><seg>Namn</seg></tuv>
    </tu>
 </body>
</tmx>

したがって、基本的には、XSLT のハードコーディングされた列ヘッダーを TMX ファイル内の文字列への参照 ( tuid属性を使用) に置き換えて、同じ XSLT が異なる言語で出力を生成できるようにしたいと考えています。

しかし、XSLT で TMX ファイルを使用する方法に関するリソースが見つからないようです。いくつかの優れたチュートリアルへの例またはポインタは大歓迎です。

4

1 に答える 1

5

XSLT 内のテキストは、XML ドキュメントから翻訳された文字列を読み取ることによってローカライズできます。数字はローカライズすることもできます。

XML ドキュメントには、言語ごとに 1 つの XML ドキュメントを含む 1 つの言語を含めるか、すべての言語を含む単一の XML ドキュメントを含めることができます。次の例の XML 形式は、Microsoft .NET リソース (.resx) ファイル (言語ごとに 1 つのファイル) またはすべての言語の単一の TMX (翻訳メモリ交換) ドキュメントに従います。ただし、テキストの読み取りに使用される XPath が一貫している限り、任意の形式を使用できます。

どちらのオプションも、XPath ' document' 関数を使用して、翻訳された文字列を含む XML を読み取ります。XSLT で使用される各文字列のパラメーターを定義します。変数ではなくパラメーターを使用すると、XSLT が変換されるときに値をオーバーライドできます。xsl:value-of翻訳されたテキストを表示するために使用します。変換が処理されるとき、言語コード (たとえば、「fr」) と、目的の言語のリソース XML ドキュメントへの URL を渡します。

http://www.codeproject.com/Articles/338731/LocalizeXSLTにある完全な機能サンプルについては、「XSLT をローカライズする方法」に関する私の記事を参照してください

于 2012-01-29T00:40:21.963 に答える