<xsl:if test="$language != ''">
<xsl:attribute name="lang">
- <xsl:value-of select="$language"/>
+ <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>
<!ENTITY l10n.gentext.language SYSTEM "../params/l10n.gentext.language.xml">
<!ENTITY l10n.gentext.default.language SYSTEM "../params/l10n.gentext.default.language.xml">
<!ENTITY l10n.gentext.use.xref.language SYSTEM "../params/l10n.gentext.use.xref.language.xml">
+<!ENTITY l10n.lang.value.rfc.compliant SYSTEM "../params/l10n.lang.value.rfc.compliant.xml">
<!ENTITY default.image.width SYSTEM "../params/default.image.width.xml">
<!ENTITY default.float.class SYSTEM "../params/default.float.class.xml">
<!ENTITY funcsynopsis.tabular.threshold SYSTEM "../params/funcsynopsis.tabular.threshold.xml">
&l10n.gentext.language;
&l10n.gentext.default.language;
&l10n.gentext.use.xref.language;
+&l10n.lang.value.rfc.compliant;
</reference>
<appendix><title>The Stylesheet</title>
<src:fragref linkend="l10n.gentext.default.language.frag"/>
<src:fragref linkend="l10n.gentext.language.frag"/>
<src:fragref linkend="l10n.gentext.use.xref.language.frag"/>
+<src:fragref linkend="l10n.lang.value.rfc.compliant.frag"/>
<src:fragref linkend="label.from.part.frag"/>
<src:fragref linkend="linenumbering.everyNth.frag"/>
<src:fragref linkend="linenumbering.extension.frag"/>
--- /dev/null
+<refentry id="l10n.lang.value.rfc.compliant">
+<refmeta>
+<refentrytitle>l10n.lang.value.rfc.compliant</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.lang.value.rfc.compliant</refname>
+<refpurpose>Make value of lang attribute RFC compliant?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='l10n.lang.value.rfc.compliant.frag'>
+<xsl:param name="l10n.lang.value.rfc.compliant" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If non-zero, ensure that the values for all <sgmltag
+class="attribute">lang</sgmltag> attributes in HTML output are RFC
+compliant<footnote
+
+><para>Section 8.1.1, <ulink
+url="http://www.w3.org/TR/REC-html40/struct/dirlang.html#h-8.1.1"
+>Language Codes</ulink>, in the HTML 4.0 Recommendation states that:
+
+<blockquote><para>[RFC1766] defines and explains the language codes
+that must be used in HTML documents.</para>
+<para>Briefly, language codes consist of a primary code and a possibly
+empty series of subcodes:
+
+<literallayout class="monospaced">language-code = primary-code ( "-" subcode )*</literallayout>
+</para>
+<para>And in RFC 1766, <ulink
+url="http://www.ietf.org/rfc/rfc1766.txt">Tags for the Identification
+of Languages</ulink>, the EBNF for "language tag" is given as:
+
+<literallayout class="monospaced">Language-Tag = Primary-tag *( "-" Subtag )
+Primary-tag = 1*8ALPHA
+Subtag = 1*8ALPHA</literallayout>
+</para>
+</blockquote>
+</para></footnote>.
+
+by taking any underscore characters in any <sgmltag
+class="attribute">lang</sgmltag> values found in source documents, and
+replacing them with hyphen characters in output HTML files. For
+example, <literal>zh_CN</literal> in a source document becomes
+<literal>zh-CN</literal> in the HTML output form that source.
+
+<note>
+<para>This parameter does not cause any case change in <sgmltag
+class="attribute">lang</sgmltag> values, because RFC 1766
+explicitly states that all "language tags" (as it calls them) "are
+to be treated as case insensitive".</para>
+</note>
+</para>
+
+</refsect1>
+</refentry>