我需要使用多种语言维护一些静态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>
如果你用所需的语言代码运行它,“de,en”就会产生:
<div>
<p>Willkommen!</p>
<p>Wo möchten Sie heute unternehmen?</p>
</div>
但是,如果你跑,“它,en”它会产生:
<div>
<p>Benvenuti!</p>
<p>Where do you want to go today?</p>
</div>
如果第二段落回英语,因为没有意大利语的翻译。 (参数“it,en”表示按优先顺序使用哪些语言。)
有人知道一种适合该法案的工具吗?如果它允许类似于上面的内容,我会考虑像HAML那样更深奥的东西。
*“深奥”是指源不是HTML(或接近HTML)但产生HTML作为输出的东西。
答案 0 :(得分: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>