2012-01-25 5 views
1

XML 데이터를 XSL-FO로 변환하는 XSLT 스타일 시트가 있습니다 (Apache FOP를 사용하여 PDF로 렌더링 됨).외부 XML 문서를 사용하여 XSLT 출력 지역화

이제 출력물을 몇 가지 다른 언어로 현지화해야합니다. 예를 들어, XSLT에 의해 생성 된 테이블의 열 머리글은 지역화해야합니다. 여기에 열 캡션이있는 테이블 헤더를 생산하는 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 파일을 사용하는 시스템의 자연스러운 방법으로 보입니다. 그래서 기본적으로 나는 TMX 파일의 문자열에 대한 참조로 XSLT의 하드 코딩 된 열 머리글을 교체하고 싶습니다

<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> 

: 여기에 두 언어에서 문자열의 부부와 TMX 파일의 간단한 예입니다 (tuid 특성 사용), 동일한 XSLT가 다른 언어로 출력을 생성 할 수 있습니다.

하지만 XSLT에서 TMX 파일을 사용하는 방법에 대한 리소스를 찾을 수없는 것 같습니다. 예제 또는 좋은 자습서를 소개하는 것이 좋습니다.

+0

번역을위한 XML 형식과 비슷합니다. 당신이 어떻게 보이는지 예제를 줄 수 있습니까? 난 당신이 갈 때 당신이 필요로하는 데이터를 검색, 문서 기능을 사용하여 외부 파일로 액세스 할 수있을 것 같아요. – grtjn

+0

열 머리글을 생산 XSLT의 발췌 문장을 줄 수 있습니까? TMX 파일에 데이터를 포함시키기 위해 현재 수행중인 작업을 확장하는 방법을 설명하는 것이 더 쉬울 수도 있습니다. 또한 가능한 경우 관련 데이터가있는 TMX 파일 조각이 유용 할 수 있습니다. 많은 사람들이 잘 알고있는 표준이 아닙니다. – Flynn1179

+0

Flynn1179 & grtjn, 답장을 보내 주셔서 감사합니다. 자세한 내용은 수정 된 게시물을 참조하십시오. – Rolf

답변

3

XSLT의 텍스트는 번역 된 문자열을 XML 문서에서 읽음으로써 현지화 될 수 있습니다. 숫자도 현지화 될 수 있습니다.

XML 문서에는 각 언어에 대해 하나의 XML 문서 또는 모든 언어의 단일 XML 문서가 포함될 수 있습니다. 다음 예에서 XML 형식은 모든 언어의 Microsoft .NET 리소스 (.resx) 파일 (언어 당 하나의 파일) 또는 단일 TMX (번역 메모리 교환) 문서를 따릅니다. 그러나 텍스트를 읽는 데 사용 된 XPath가 일관성이있는 한 모든 형식을 사용할 수 있습니다.

두 옵션 모두 XPath 'document'기능을 사용하여 변환 된 문자열로 XML을 읽습니다. XSLT에 사용 된 각 문자열에 대한 매개 변수를 정의하십시오. 변수가 아닌 매개 변수를 사용하면 XSLT가 변형 될 때 값을 재정의 할 수 있습니다. xsl:value-of을 사용하여 번역 된 텍스트를 표시하십시오. 변환이 처리되면 언어 코드 (예 : 'fr')와 URL을 원하는 언어의 자원 XML. 서에 전달하십시오.

http://www.codeproject.com/Articles/338731/LocalizeXSLT의 전체 기능 샘플은 내 문서 "How to localize XSLT"을 참조하십시오.

+0

우수 튜토리얼, 더그. 아직 시도하지 않았지만 정확히 내가 찾던 것과 같습니다. – Rolf

관련 문제