<xsl:template name="l10n.language"><xsl:param name="target" select="."/><xsl:param name="xref-context" select="false()"/><xsl:variable name="mc-language"><xsl:choose><xsl:when test="$l10n.gentext.language != ''"><xsl:value-of select="$l10n.gentext.language"/></xsl:when><xsl:when test="$xref-context or $l10n.gentext.use.xref.language != 0"><!-- can't do this one step: attributes are unordered! --><xsl:variable name="lang-scope" select="$target/ancestor-or-self::* [@lang or @xml:lang][1]"/><xsl:variable name="lang-attr" select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/><xsl:choose><xsl:when test="string($lang-attr) = ''"><xsl:value-of select="$l10n.gentext.default.language"/></xsl:when><xsl:otherwise><xsl:value-of select="$lang-attr"/></xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise><!-- can't do this one step: attributes are unordered! --><xsl:variable name="lang-scope" select="$target/ancestor-or-self::* [@lang or @xml:lang][1]"/><xsl:variable name="lang-attr" select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/><xsl:choose><xsl:when test="string($lang-attr) = ''"><xsl:value-of select="$l10n.gentext.default.language"/></xsl:when><xsl:otherwise><xsl:value-of select="$lang-attr"/></xsl:otherwise></xsl:choose></xsl:otherwise></xsl:choose></xsl:variable><xsl:variable name="language" select="translate($mc-language, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"/><xsl:variable name="adjusted.language"><xsl:choose><xsl:when test="contains($language,'-')"><xsl:value-of select="substring-before($language,'-')"/><xsl:text>_</xsl:text><xsl:value-of select="substring-after($language,'-')"/></xsl:when><xsl:otherwise><xsl:value-of select="$language"/></xsl:otherwise></xsl:choose></xsl:variable><xsl:choose><xsl:when test="$l10n.xml/l:i18n/l:l10n[@language=$adjusted.language]"><xsl:value-of select="$adjusted.language"/></xsl:when><!-- try just the lang code without country --><xsl:when test="$l10n.xml/l:i18n/l:l10n[@language=substring-before($adjusted.language,'_')]"><xsl:value-of select="substring-before($adjusted.language,'_')"/></xsl:when><!-- or use the default --><xsl:otherwise><xsl:message><xsl:text>No localization exists for "</xsl:text><xsl:value-of select="$adjusted.language"/><xsl:text>" or "</xsl:text><xsl:value-of select="substring-before($adjusted.language,'_')"/><xsl:text>". Using default "</xsl:text><xsl:value-of select="$l10n.gentext.default.language"/><xsl:text>".</xsl:text></xsl:message><xsl:value-of select="$l10n.gentext.default.language"/></xsl:otherwise></xsl:choose></xsl:template>
<xsl:template name="language.attribute"><xsl:param name="node" select="."/><xsl:variable name="language"><xsl:choose><xsl:when test="$l10n.gentext.language != ''"><xsl:value-of select="$l10n.gentext.language"/></xsl:when><xsl:otherwise><!-- can't do this one step: attributes are unordered! --><xsl:variable name="lang-scope" select="$node/ancestor-or-self::* [@lang or @xml:lang][1]"/><xsl:variable name="lang-attr" select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/><xsl:choose><xsl:when test="string($lang-attr) = ''"><xsl:value-of select="$l10n.gentext.default.language"/></xsl:when><xsl:otherwise><xsl:value-of select="$lang-attr"/></xsl:otherwise></xsl:choose></xsl:otherwise></xsl:choose></xsl:variable><xsl:if test="$language != ''"><xsl:attribute name="lang"><xsl:choose><xsl:when test="$l10n.lang.value.rfc.compliant != 0"><xsl:value-of select="translate($language, '_', '-')"/></xsl:when><xsl:otherwise><xsl:value-of select="$language"/></xsl:otherwise></xsl:choose></xsl:attribute></xsl:if><!-- FIXME: This is sort of hack, but it was the easiest way to add at least partial support for dir attribute --><xsl:copy-of select="ancestor-or-self::*[@dir][1]/@dir"/></xsl:template>
Template
xml.language.attribute
Documentation
Description
Duplication of language.attribute template to allow for xml:lang attribute
creation for XHTML 1.1 and epub target
<xsl:template name="xml.language.attribute"><xsl:param name="node" select="."/><xsl:variable name="language"><xsl:choose><xsl:when test="$l10n.gentext.language != ''"><xsl:value-of select="$l10n.gentext.language"/></xsl:when><xsl:otherwise><!-- can't do this one step: attributes are unordered! --><xsl:variable name="lang-scope" select="$node/ancestor-or-self::* [@lang or @xml:lang][1]"/><xsl:variable name="lang-attr" select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/><xsl:choose><xsl:when test="string($lang-attr) = ''"><xsl:value-of select="$l10n.gentext.default.language"/></xsl:when><xsl:otherwise><xsl:value-of select="$lang-attr"/></xsl:otherwise></xsl:choose></xsl:otherwise></xsl:choose></xsl:variable><xsl:if test="$language != ''"><xsl:attribute name="xml:lang"><xsl:choose><xsl:when test="$l10n.lang.value.rfc.compliant != 0"><xsl:value-of select="translate($language, '_', '-')"/></xsl:when><xsl:otherwise><xsl:value-of select="$language"/></xsl:otherwise></xsl:choose></xsl:attribute></xsl:if><!-- FIXME: This is sort of hack, but it was the easiest way to add at least partial support for dir attribute --><xsl:copy-of select="ancestor-or-self::*[@dir][1]/@dir"/></xsl:template>
********************************************************************
$Id$
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
See ../README or http://docbook.sf.net/release/xsl/current/ for
copyright and other information.
This file contains localization templates (for internationalization)
********************************************************************