]> granicus.if.org Git - docbook-dsssl/commitdiff
Added code to the "l10n.language" template to fall
authorBob Stayton <bobs@sagehill.net>
Tue, 31 Jul 2001 09:35:06 +0000 (09:35 +0000)
committerBob Stayton <bobs@sagehill.net>
Tue, 31 Jul 2001 09:35:06 +0000 (09:35 +0000)
back to the two-letter lang code if a longer lang
does not have a <lang>.xml localization file.
And it falls back to the default lang if it can't
find that either.

Also fixed a bug for finding the lang attribute.
It was using the last() function, but in an
ancestor-or-self node set you want the first ancestor
(closest) with a lang value.

49c49
<                                |ancestor-or-self::*/@xml:lang)[last()]"/>
---
>                                |ancestor-or-self::*/@xml:lang)[1]"/>

xsl/common/l10n.xsl

index a59236654eca4408463711d61cc72e5fac7d377a..96ca1a64e023834e34e4da9b095c71b1c16de6d5 100644 (file)
@@ -32,7 +32,7 @@
       <xsl:when test="$xref-context or $l10n.gentext.use.xref.language">
         <xsl:variable name="lang-attr"
                       select="($target/ancestor-or-self::*/@lang
-                               |$target/ancestor-or-self::*/@xml:lang)[last()]"/>
+                               |$target/ancestor-or-self::*/@xml:lang)[1]"/>
         <xsl:choose>
           <xsl:when test="string($lang-attr) = ''">
             <xsl:value-of select="$l10n.gentext.default.language"/>
@@ -46,7 +46,7 @@
       <xsl:otherwise>
         <xsl:variable name="lang-attr" 
                       select="(ancestor-or-self::*/@lang
-                               |ancestor-or-self::*/@xml:lang)[last()]"/>
+                               |ancestor-or-self::*/@xml:lang)[1]"/>
         <xsl:choose>
           <xsl:when test="string($lang-attr) = ''">
             <xsl:value-of select="$l10n.gentext.default.language"/>
     </xsl:choose>
   </xsl:variable>
 
+  <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="contains($language,'-')">
-      <xsl:value-of select="substring-before($language,'-')"/>
-      <xsl:text>_</xsl:text>
-      <xsl:value-of select="substring-after($language,'-')"/>
+    <xsl:when test="$l10n.xml/internationalization/localization[@language=$adjusted.language]">
+      <xsl:value-of select="$adjusted.language"/>
+    </xsl:when>
+    <!-- try just the lang code without country -->
+    <xsl:when test="$l10n.xml/internationalization/localization[@language=substring-before($adjusted.language,'_')]">
+      <xsl:value-of select="substring-before($adjusted.language,'_')"/>
     </xsl:when>
+    <!-- or use the default -->
     <xsl:otherwise>
-      <xsl:value-of select="$language"/>
+      <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>