我需要用几种语言维护一些静态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>但是如果你使用" it,en“,它会产生:
<div>
<p>Benvenuti!</p>
<p>Where do you want to go today?</p>
</div>其中第二段回到英语,因为没有可用的意大利语翻译。(参数"it,en“指示按优先顺序使用的语言。)
有没有人知道有什么工具可以满足这个要求?我会考虑一些更深奥的东西,比如HAML,如果它允许类似上面的东西的话。
*所谓“深奥”,是指源不是HTML (或接近HTML),而是生成HTML作为输出的东西。
发布于 2011-06-17 16:44:58
您可以编写一个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>https://stackoverflow.com/questions/6383292
复制相似问题