簡體   English   中英

xslt本地化

[英]xslt localization

我有以下xml文件: -

<?xml version="1.0" encoding="UTF-8"?> 
<directory> 
   <employee> 
      <name>Joe Smith</name> 
      <phone>4-0192</phone> 
   </employee> 
   <employee> 
      <name>Sally Jones</name> 
      <phone>4-2831</phone> 
   </employee> 
</directory>

並關注xslt: -

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="html"/>
   <xsl:template match="directory">
      <div>List of Employee<xsl:value-of select="@directory"/>
      </div>
      <br/>
      <table>
        <tr>
          <td>Employee Name</td>
          <td>Contact Details</td>
        </tr>
        <xsl:apply-templates select="employee"></xsl:apply-templates>
      </table>

    </xsl:template>

    <xsl:template match="employee">
      <tr>
        <td>
           <xsl:value-of select="@name"/>
        </td>
        <td>
           <xsl:value-of select="@phone"/>
        </td>
      </tr>
    </xsl:template>

</xsl:stylesheet>

我想本地化xslt文本:員工列表,員工姓名和聯系人詳細信息

如何本地化xslt文本?

我可以看到三種方法,其中一種最好(或者如果其中任何一種是替代方案)取決於你何時以及如何需要最終的xml:

以編程方式構造xsl

使用例如XmlDocument構建xsl - 然后您可以使用常規字符串資源來填充標簽,並可能使用應用程序的區域性設置。

在xsl中嵌入翻譯

使用<xsl:param>告訴轉換使用哪種語言,然后在每個字符串處放置<xsl:choose>

<xsl:choose>
    <xsl:when test="$language='en'">Contact Details</xsl:when>
    <xsl:when test="$language='sv'">Kontaktuppgifter</xsl:when>
    <xsl:otherwise>Unknown language <xsl:value-of select="$language"/></xsl:otherwise>
</xsl:choose>

查找翻譯作為轉換的一部分

將翻譯放在自己的translation.xml的xml文檔中:

<strings>
    <string language="en" key="ContactDetails">Contact Details</string>
    <string language="sv" key="ContactDetails">Kontaktuppgifter</string>
    [...]
</strings>   

然后加載它的內容:

<xsl:variable name="strings" select="document('translation.xml')/strings"/>

...並訪問它們:

<xsl:value-of select="$strings/string[@key='ContactDetails' and @language=$language]"/>

請參閱我對此SO問題的回答 ,詳細說明如何通過<xsl:key>key()函數有效地使用存儲為單獨的外部XML文檔的查找表

可以通過從XML文檔中讀取已翻譯的字符串來本地化XSLT中的文本。 數字也可能是本地化的。

XML文檔可以包含一種語言,每種語言都有一個XML文檔,或者包含所有語言的單個XML文檔。 以下示例中的XML格式遵循Microsoft .NET資源(.resx)文件(每種語言一個文件)或包含所有語言的單個TMX(翻譯記憶庫交換)文檔。 但是,只要用於讀取文本的XPath是一致的,就可以使用任何格式。

這兩種方法都使用XPath“ document ”功能與翻譯的字符串來讀取XML。 為XSLT中使用的每個字符串定義參數。 使用參數而不是變量允許在轉換XSLT時覆蓋值。 使用xsl:value-of顯示已翻譯的文本。 處理轉換時,將語言代碼(例如“fr”)和URL傳遞給所需語言的資源XML文檔。

有關完整的功能樣本,請參閱我的文章“ 如何本地化XSLT ”, 網址http://www.codeproject.com/Articles/338731/LocalizeXSLT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM