home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2003 October / INTERNET108.ISO / pc / software / windows / building / xmlspy / xmlspyentcomplete5.exe / Data1.cab / _04B4907F90F4400C9A9A2FC84D055F10 < prev    next >
Encoding:
Extensible Markup Language  |  2002-09-04  |  12.4 KB  |  356 lines

  1. <?xml version='1.0'?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3.                 xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
  4.                 exclude-result-prefixes="l"
  5.                 version='1.0'>
  6.  
  7. <!-- ********************************************************************
  8.      $Id: l10n.xsl,v 1.1.2.2 2002/09/04 13:27:13 jdj Exp $
  9.      ********************************************************************
  10.  
  11.      This file is part of the XSL DocBook Stylesheet distribution.
  12.      See ../README or http://nwalsh.com/docbook/xsl/ for copyright
  13.      and other information.
  14.  
  15.      This file contains localization templates (for internationalization)
  16.      ******************************************************************** -->
  17.  
  18. <xsl:param name="l10n.xml" select="document('../common/l10n.xml')"/>
  19. <xsl:param name="local.l10n.xml" select="document('')"/>
  20.  
  21. <xsl:param name="l10n.gentext.language" select="''"/>
  22. <xsl:param name="l10n.gentext.default.language" select="'en'"/>
  23. <xsl:param name="l10n.gentext.use.xref.language" select="false()"/>
  24.  
  25. <xsl:template name="l10n.language">
  26.   <xsl:param name="target" select="."/>
  27.   <xsl:param name="xref-context" select="false()"/>
  28.  
  29.   <xsl:variable name="language">
  30.     <xsl:choose>
  31.       <xsl:when test="$l10n.gentext.language != ''">
  32.         <xsl:value-of select="$l10n.gentext.language"/>
  33.       </xsl:when>
  34.  
  35.       <xsl:when test="$xref-context or $l10n.gentext.use.xref.language">
  36.         <!-- can't do this one step: attributes are unordered! -->
  37.         <xsl:variable name="lang-scope"
  38.                       select="($target/ancestor-or-self::*[@lang]
  39.                                |$target/ancestor-or-self::*[@xml:lang])[last()]"/>
  40.         <xsl:variable name="lang-attr"
  41.                       select="$lang-scope/@lang | $lang-scope/@xml:lang"/>
  42.         <xsl:choose>
  43.           <xsl:when test="string($lang-attr) = ''">
  44.             <xsl:value-of select="$l10n.gentext.default.language"/>
  45.           </xsl:when>
  46.           <xsl:otherwise>
  47.             <xsl:value-of select="$lang-attr"/>
  48.           </xsl:otherwise>
  49.         </xsl:choose>
  50.       </xsl:when>
  51.  
  52.       <xsl:otherwise>
  53.         <!-- can't do this one step: attributes are unordered! -->
  54.         <xsl:variable name="lang-scope"
  55.                       select="(ancestor-or-self::*[@lang]
  56.                                |ancestor-or-self::*[@xml:lang])[last()]"/>
  57.         <xsl:variable name="lang-attr"
  58.                       select="$lang-scope/@lang | $lang-scope/@xml:lang"/>
  59.  
  60.         <xsl:choose>
  61.           <xsl:when test="string($lang-attr) = ''">
  62.             <xsl:value-of select="$l10n.gentext.default.language"/>
  63.           </xsl:when>
  64.           <xsl:otherwise>
  65.             <xsl:value-of select="$lang-attr"/>
  66.           </xsl:otherwise>
  67.         </xsl:choose>
  68.       </xsl:otherwise>
  69.     </xsl:choose>
  70.   </xsl:variable>
  71.  
  72.   <xsl:variable name="adjusted.language">
  73.     <xsl:choose>
  74.       <xsl:when test="contains($language,'-')">
  75.         <xsl:value-of select="substring-before($language,'-')"/>
  76.         <xsl:text>_</xsl:text>
  77.         <xsl:value-of select="substring-after($language,'-')"/>
  78.       </xsl:when>
  79.       <xsl:otherwise>
  80.         <xsl:value-of select="$language"/>
  81.       </xsl:otherwise>
  82.     </xsl:choose>
  83.   </xsl:variable>
  84.  
  85.   <xsl:choose>
  86.     <xsl:when test="$l10n.xml/l:i18n/l:l10n[@language=$adjusted.language]">
  87.       <xsl:value-of select="$adjusted.language"/>
  88.     </xsl:when>
  89.     <!-- try just the lang code without country -->
  90.     <xsl:when test="$l10n.xml/l:i18n/l:l10n[@language=substring-before($adjusted.language,'_')]">
  91.       <xsl:value-of select="substring-before($adjusted.language,'_')"/>
  92.     </xsl:when>
  93.     <!-- or use the default -->
  94.     <xsl:otherwise>
  95.       <xsl:message>
  96.         <xsl:text>No localization exists for "</xsl:text>
  97.         <xsl:value-of select="$adjusted.language"/>
  98.         <xsl:text>" or "</xsl:text>
  99.         <xsl:value-of select="substring-before($adjusted.language,'_')"/>
  100.         <xsl:text>". Using default "</xsl:text>
  101.         <xsl:value-of select="$l10n.gentext.default.language"/>
  102.         <xsl:text>".</xsl:text>
  103.       </xsl:message>
  104.       <xsl:value-of select="$l10n.gentext.default.language"/>
  105.     </xsl:otherwise>
  106.   </xsl:choose>
  107. </xsl:template>
  108.  
  109. <xsl:template name="gentext">
  110.   <xsl:param name="key" select="local-name(.)"/>
  111.   <xsl:param name="lang">
  112.     <xsl:call-template name="l10n.language"/>
  113.   </xsl:param>
  114.  
  115.   <xsl:variable name="local.l10n.gentext"
  116.                 select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:gentext[@key=$key])[1]"/>
  117.  
  118.   <xsl:variable name="l10n.gentext"
  119.                 select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:gentext[@key=$key])[1]"/>
  120.  
  121.   <xsl:variable name="l10n.name">
  122.     <xsl:choose>
  123.       <xsl:when test="$local.l10n.gentext">
  124.         <xsl:value-of select="$local.l10n.gentext/@text"/>
  125.       </xsl:when>
  126.       <xsl:otherwise>
  127.         <xsl:value-of select="$l10n.gentext/@text"/>
  128.       </xsl:otherwise>
  129.     </xsl:choose>
  130.   </xsl:variable>
  131.  
  132.   <xsl:choose>
  133.     <xsl:when test="count($local.l10n.gentext) > 0">
  134.       <xsl:value-of select="$local.l10n.gentext/@text"/>
  135.     </xsl:when>
  136.     <xsl:when test="count($l10n.gentext) > 0">
  137.       <xsl:value-of select="$l10n.gentext/@text"/>
  138.     </xsl:when>
  139.     <xsl:otherwise>
  140.       <xsl:message>
  141.         <xsl:text>No "</xsl:text>
  142.         <xsl:value-of select="$lang"/>
  143.         <xsl:text>" localization of "</xsl:text>
  144.         <xsl:value-of select="$key"/>
  145.         <xsl:text>" exists</xsl:text>
  146.     <xsl:choose>
  147.       <xsl:when test="$lang = 'en'">
  148.          <xsl:text>.</xsl:text>
  149.       </xsl:when>
  150.       <xsl:otherwise>
  151.          <xsl:text>; using "en".</xsl:text>
  152.       </xsl:otherwise>
  153.     </xsl:choose>
  154.       </xsl:message>
  155.  
  156.       <xsl:value-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:gentext[@key=$key])[1]/@text"/>
  157.     </xsl:otherwise>
  158.   </xsl:choose>
  159. </xsl:template>
  160.  
  161. <xsl:template name="gentext.element.name">
  162.   <xsl:param name="element.name" select="name(.)"/>
  163.   <xsl:param name="lang">
  164.     <xsl:call-template name="l10n.language"/>
  165.   </xsl:param>
  166.  
  167.   <xsl:call-template name="gentext">
  168.     <xsl:with-param name="key" select="$element.name"/>
  169.     <xsl:with-param name="lang" select="$lang"/>
  170.   </xsl:call-template>
  171. </xsl:template>
  172.  
  173. <xsl:template name="gentext.space">
  174.   <xsl:text> </xsl:text>
  175. </xsl:template>
  176.  
  177. <xsl:template name="gentext.edited.by">
  178.   <xsl:call-template name="gentext">
  179.     <xsl:with-param name="key" select="'Editedby'"/>
  180.   </xsl:call-template>
  181. </xsl:template>
  182.  
  183. <xsl:template name="gentext.by">
  184.   <xsl:call-template name="gentext">
  185.     <xsl:with-param name="key" select="'by'"/>
  186.   </xsl:call-template>
  187. </xsl:template>
  188.  
  189. <xsl:template name="gentext.dingbat">
  190.   <xsl:param name="dingbat">bullet</xsl:param>
  191.   <xsl:param name="lang">
  192.     <xsl:call-template name="l10n.language"/>
  193.   </xsl:param>
  194.  
  195.   <xsl:variable name="local.l10n.dingbat"
  196.                 select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:dingbat[@key=$dingbat])[1]"/>
  197.  
  198.   <xsl:variable name="l10n.dingbat"
  199.                 select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:dingbat[@key=$dingbat])[1]"/>
  200.  
  201.   <xsl:choose>
  202.     <xsl:when test="count($local.l10n.dingbat) > 0">
  203.       <xsl:value-of select="$local.l10n.dingbat/@text"/>
  204.     </xsl:when>
  205.     <xsl:when test="count($l10n.dingbat) > 0">
  206.       <xsl:value-of select="$l10n.dingbat/@text"/>
  207.     </xsl:when>
  208.     <xsl:otherwise>
  209.       <xsl:message>
  210.         <xsl:text>No "</xsl:text>
  211.         <xsl:value-of select="$lang"/>
  212.         <xsl:text>" localization of dingbat </xsl:text>
  213.         <xsl:value-of select="$dingbat"/>
  214.         <xsl:text> exists; using "en".</xsl:text>
  215.       </xsl:message>
  216.  
  217.       <xsl:value-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:dingbat[@key=$dingbat])[1]/@text"/>
  218.     </xsl:otherwise>
  219.   </xsl:choose>
  220. </xsl:template>
  221.  
  222. <xsl:template name="gentext.startquote">
  223.   <xsl:call-template name="gentext.dingbat">
  224.     <xsl:with-param name="dingbat">startquote</xsl:with-param>
  225.   </xsl:call-template>
  226. </xsl:template>
  227.  
  228. <xsl:template name="gentext.endquote">
  229.   <xsl:call-template name="gentext.dingbat">
  230.     <xsl:with-param name="dingbat">endquote</xsl:with-param>
  231.   </xsl:call-template>
  232. </xsl:template>
  233.  
  234. <xsl:template name="gentext.nestedstartquote">
  235.   <xsl:call-template name="gentext.dingbat">
  236.     <xsl:with-param name="dingbat">nestedstartquote</xsl:with-param>
  237.   </xsl:call-template>
  238. </xsl:template>
  239.  
  240. <xsl:template name="gentext.nestedendquote">
  241.   <xsl:call-template name="gentext.dingbat">
  242.     <xsl:with-param name="dingbat">nestedendquote</xsl:with-param>
  243.   </xsl:call-template>
  244. </xsl:template>
  245.  
  246. <xsl:template name="gentext.nav.prev">
  247.   <xsl:call-template name="gentext">
  248.     <xsl:with-param name="key" select="'nav-prev'"/>
  249.   </xsl:call-template>
  250. </xsl:template>
  251.  
  252. <xsl:template name="gentext.nav.next">
  253.   <xsl:call-template name="gentext">
  254.     <xsl:with-param name="key" select="'nav-next'"/>
  255.   </xsl:call-template>
  256. </xsl:template>
  257.  
  258. <xsl:template name="gentext.nav.home">
  259.   <xsl:call-template name="gentext">
  260.     <xsl:with-param name="key" select="'nav-home'"/>
  261.   </xsl:call-template>
  262. </xsl:template>
  263.  
  264. <xsl:template name="gentext.nav.up">
  265.   <xsl:call-template name="gentext">
  266.     <xsl:with-param name="key" select="'nav-up'"/>
  267.   </xsl:call-template>
  268. </xsl:template>
  269.  
  270. <!-- ============================================================ -->
  271.  
  272. <xsl:template name="gentext.template">
  273.   <xsl:param name="context" select="'default'"/>
  274.   <xsl:param name="name" select="'default'"/>
  275.   <xsl:param name="purpose"/>
  276.   <xsl:param name="xrefstyle"/>
  277.   <xsl:param name="referrer"/>
  278.   <xsl:param name="lang">
  279.     <xsl:call-template name="l10n.language"/>
  280.   </xsl:param>
  281.  
  282.   <xsl:variable name="local.localization.node"
  283.                 select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang])[1]"/>
  284.  
  285.   <xsl:variable name="localization.node"
  286.                 select="($l10n.xml/l:i18n/l:l10n[@language=$lang])[1]"/>
  287.  
  288.   <xsl:if test="count($localization.node) = 0
  289.                 and count($local.localization.node) = 0">
  290.     <xsl:message>
  291.       <xsl:text>No "</xsl:text>
  292.       <xsl:value-of select="$lang"/>
  293.       <xsl:text>" localization exists.</xsl:text>
  294.     </xsl:message>
  295.   </xsl:if>
  296.  
  297.   <xsl:variable name="local.context.node"
  298.                 select="$local.localization.node/l:context[@name=$context]"/>
  299.  
  300.   <xsl:variable name="context.node"
  301.                 select="$localization.node/l:context[@name=$context]"/>
  302.  
  303.   <xsl:if test="count($context.node) = 0
  304.                 and count($local.context.node) = 0">
  305.     <xsl:message>
  306.       <xsl:text>No context named "</xsl:text>
  307.       <xsl:value-of select="$context"/>
  308.       <xsl:text>" exists in the "</xsl:text>
  309.       <xsl:value-of select="$lang"/>
  310.       <xsl:text>" localization.</xsl:text>
  311.     </xsl:message>
  312.   </xsl:if>
  313.  
  314.   <xsl:variable name="local.template.node"
  315.                 select="($local.context.node/l:template[@name=$name
  316.                                                         and @style
  317.                                                         and @style=$xrefstyle]
  318.                         |$local.context.node/l:template[@name=$name
  319.                                                         and not(@style)])[1]"/>
  320.  
  321.   <xsl:variable name="template.node"
  322.                 select="($context.node/l:template[@name=$name
  323.                                                   and @style
  324.                                                   and @style=$xrefstyle]
  325.                         |$context.node/l:template[@name=$name
  326.                                                   and not(@style)])[1]"/>
  327.  
  328.   <xsl:choose>
  329.     <xsl:when test="$local.template.node">
  330.       <xsl:value-of select="$local.template.node/@text"/>
  331.     </xsl:when>
  332.     <xsl:when test="$template.node/@text">
  333.       <xsl:value-of select="$template.node/@text"/>
  334.     </xsl:when>
  335. <!-- I'm not sure this is a good idea ...
  336.     <xsl:when test="$context = 'xref'">
  337.       <xsl:text>%t</xsl:text>
  338.     </xsl:when>
  339. -->
  340.     <xsl:otherwise>
  341.       <xsl:message>
  342.         <xsl:text>No template named "</xsl:text>
  343.         <xsl:value-of select="$name"/>
  344.         <xsl:text>" exists in the context named "</xsl:text>
  345.         <xsl:value-of select="$context"/>
  346.         <xsl:text>" in the "</xsl:text>
  347.         <xsl:value-of select="$lang"/>
  348.         <xsl:text>" localization.</xsl:text>
  349.       </xsl:message>
  350.     </xsl:otherwise>
  351.   </xsl:choose>
  352. </xsl:template>
  353.  
  354. </xsl:stylesheet>
  355.  
  356.