2011-06-17 71 views
0

我需要用幾種語言來維護一些靜態HTML頁面。我正在尋找一種工具,可以使此維護工作更簡單明瞭。處理多種(口語)語言的HTML生成器

我的理想工具,可能需要一些HTML標記是這樣的:

<div> 
    <p> 
    <langs> 
     <lang lang="en">Welcome!</lang> 
     <lang lang="de">Willkommen!</lang> 
     <lang lang="it">Benvenuti!</lang> 
    </langs> 
    </p> 
    <p> 
    <langs> 
     <lang lang="en">Where do you want to go today?</lang> 
     <lang lang="de">Wo möchten Sie heute unternehmen?</lang> 
    </langs> 
    </p> 
</div> 

如果你想要的語言代碼,「德,恩」運行它,它會產生:

<div> 
    <p>Willkommen!</p> 
    <p>Wo möchten Sie heute unternehmen?</p> 
</div> 

但如果你用,碰到「吧,恩」,它會產生:

<div> 
    <p>Benvenuti!</p> 
    <p>Where do you want to go today?</p> 
</div> 

當第二段回落到英語,因爲WA沒有可用的意大利語翻譯。 (參數「it,en」表示按優先順序使用哪種語言。)

有人知道一個適合賬單的工具嗎?我會考慮一些更深奧的東西,比如HAML,如果它允許類似上面的東西。通過「深奧」我的意思是源不是HTML(或接近HTML),但產生HTML作爲輸出的東西。

+0

的 「德,恩」 的例子不符的行爲或「吧,恩「的例子太多了,沒有英文」你今天想去哪裏?「顯示文本。這是一個錯誤。另外,您的語言內容是否存儲在數據庫中? – Raoul 2011-06-17 08:41:54

+0

「de,en」表示首先使用「de」,如果沒有「de」,則使用「en」。 (對於更復雜的,你可以有更多的,例如「en-AU,en-GB,en」)。我的語言內容是靜態的HTML文件。 – Evan 2011-06-17 08:47:33

+0

難道你不能用JavaScript來編寫你想要的內容嗎?你可以隱藏所有的文本,並按要求寫... – 2011-06-17 14:45:58

回答

0

你可以寫一個XSLT template這樣做。

編輯: 下面是一個例子XSL模板:

<?xml version="1.0"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes" method="xml"/> 

    <xsl:param name="desiredLang" select="'it'"/> 
    <xsl:param name="defaultLang" select="'en'"/> 

    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="langs"> 
     <xsl:variable name="desiredValue" select="./lang[@lang=$desiredLang]"/> 
     <xsl:variable name="defaultValue" select="./lang[@lang=$defaultLang]"/> 
     <xsl:choose> 
      <xsl:when test="$desiredValue"> 
       <xsl:value-of select="$desiredValue"/> 
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:value-of select="$defaultValue"/> 
      </xsl:otherwise> 
     </xsl:choose> 
    </xsl:template> 

</xsl:stylesheet> 

下面是它的輸出:

<div> 
    <p>Benvenuti!</p> 
    <p>Where do you want to go today?</p> 
</div> 
+0

任何特別的原因downvote這? XML/XSL在這裏是一個明顯的選擇,這個答案的唯一問題是缺乏一個好例子。 – 2011-06-17 14:43:30

+0

添加示例。現在你知道我知道我在說什麼了) – rustyx 2011-06-21 08:27:32