orig/trans automatic selection patch for news/{newsflash,press}.html
Martin Heinen
martin at sumuk.de
Thu Nov 25 00:57:18 UTC 2004
On Tue, Nov 23, 2004 at 04:35:53AM +0900, Hiroki Sato wrote:
> Translators, could you please try them? I know there are
> several known problems such as www/<lang>/index.xsl support and
> so on, they should work and you can understand what I want to do.
For each single day the patch generates n^2 entries
for n events (this doesn't matter if n equals 1 :)
For example, September 15 has two events and the
resulting list has four events.
To fix this, I introduced the variable index, which
tracks the current event position and selects this
position from the result set (a patch for
includes.misc.xsl is attached):
| <xsl:for-each select="day">
| <xsl:param name="index" select="position()" />
| <xsl:param name="day" select="name" />
| <!-- search localized items per day basis -->
| <xsl:param name="localizeditems"
| select="document($news.project.xml)
| //descendant::year[name = $year]
| /month[name = $month]
| /day[name = $day]
| [position() = $index]" />
This requires that translated entries are ordered
exactly like the original entries.
> I would appreciate your comments. Especially, I would like to
> know if the l10n knobs are sufficient for your language. Thanks.
Other than that, the patches apply cleanly and are working
for the German tree, nice idea!
--
Marxpitn
-------------- next part --------------
Index: includes.misc.xsl
===================================================================
RCS file: /u/cvs/www/share/sgml/includes.misc.xsl,v
retrieving revision 1.13
diff -u -r1.13 includes.misc.xsl
--- includes.misc.xsl 27 Jun 2004 19:18:00 -0000 1.13
+++ includes.misc.xsl 25 Nov 2004 00:19:45 -0000
@@ -25,6 +25,13 @@
<!--
template name used in
+ html-news-list-newsflash news/newsflash.xsl
+ html-news-list-press news/press.xsl
+ html-news-list-datelabel news/newsflash.xsl (for l10n)
+ html-news-generate-anchor news/newsflash.xsl
+ html-news-make-olditems-list news/newsflash.xsl (for l10n)
+ html-news-month-headings news/newsflash.xsl (for l10n)
+
html-list-advisories security/mkindex.xsl
html-list-advisories-putitems security/mkindex.xsl
html-list-advisories-release-label security/mkindex.xsl (for l10n)
@@ -40,6 +47,251 @@
html-index-news-press-items-lastmodified index.xsl (for i10n)
html-index-mirrors-options-list index.xsl
-->
+
+ <!-- template: "html-news-make-olditems-list" -->
+ <xsl:template name="html-news-make-olditems-list">
+ <p>Old announcement:
+ <a href="2002/index.html">2002</a>,
+ <a href="2001/index.html">2001</a>,
+ <a href="2000/index.html">2000</a>,
+ <a href="1999/index.html">1999</a>,
+ <a href="1998/index.html">1998</a>,
+ <a href="1997/index.html">1997</a>,
+ <a href="1996/index.html">1996</a></p>
+ </xsl:template>
+
+ <!-- template: "html-news-list-newsflash" -->
+ <xsl:template name="html-news-list-newsflash">
+ <xsl:param name="news.project.xml-master" select="'none'" />
+ <xsl:param name="news.project.xml" select="'none'" />
+
+ <xsl:for-each select="document($news.project.xml-master)//descendant::year">
+ <xsl:param name="year" select="name" />
+
+ <xsl:for-each select="month">
+ <xsl:param name="month" select="name" />
+
+ <h1>
+ <!-- generate month headings -->
+ <xsl:call-template name="html-news-month-headings">
+ <xsl:with-param name="year" select="$year" />
+ <xsl:with-param name="month">
+ <xsl:call-template name="transtable-lookup">
+ <xsl:with-param name="word-group" select="'number-month'" />
+ <xsl:with-param name="word" select="$month" />
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </h1>
+
+ <ul>
+ <xsl:for-each select="day">
+ <xsl:param name="index" select="position()" />
+ <xsl:param name="day" select="name" />
+ <!-- search localized items per day basis -->
+ <xsl:param name="localizeditems"
+ select="document($news.project.xml)
+ //descendant::year[name = $year]
+ /month[name = $month]
+ /day[name = $day]
+ [position() = $index]" />
+
+ <xsl:choose>
+ <xsl:when test="$localizeditems">
+ <!-- when localized item exists -->
+ <xsl:for-each select="$localizeditems/event">
+ <xsl:param name="anchor-position" select="position()" />
+
+ <li><p class="localized">
+ <a><xsl:attribute name="name">
+ <xsl:call-template name="html-news-generate-anchor">
+ <xsl:with-param name="label" select="local-name()" />
+ <xsl:with-param name="year" select="$year" />
+ <xsl:with-param name="month" select="$month" />
+ <xsl:with-param name="day" select="$day" />
+ <xsl:with-param name="pos" select="$anchor-position" />
+ </xsl:call-template>
+ </xsl:attribute></a>
+ <b><xsl:call-template name="html-news-datelabel">
+ <xsl:with-param name="year" select="$year" />
+ <xsl:with-param name="month">
+ <xsl:call-template name="transtable-lookup">
+ <xsl:with-param name="word-group" select="'number-month'" />
+ <xsl:with-param name="word" select="$month" />
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="day" select="$day" />
+ </xsl:call-template></b>
+ <xsl:text> </xsl:text>
+
+ <!-- put localized text -->
+ <xsl:apply-templates select="p" />
+
+ </p>
+ </li>
+ </xsl:for-each>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- when localized item does not exist -->
+ <xsl:for-each select="event">
+ <xsl:param name="anchor-position" select="position()" />
+
+ <li><p class="original">
+ <a><xsl:attribute name="name">
+ <xsl:call-template name="html-news-generate-anchor">
+ <xsl:with-param name="label" select="local-name()" />
+ <xsl:with-param name="year" select="$year" />
+ <xsl:with-param name="month" select="$month" />
+ <xsl:with-param name="day" select="$day" />
+ <xsl:with-param name="pos" select="$anchor-position" />
+ </xsl:call-template>
+ </xsl:attribute></a>
+ <b><xsl:call-template name="html-news-datelabel">
+ <xsl:with-param name="year" select="$year" />
+ <xsl:with-param name="month">
+ <xsl:call-template name="transtable-lookup">
+ <xsl:with-param name="word-group" select="'number-month'" />
+ <xsl:with-param name="word" select="$month" />
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="day" select="$day" />
+ </xsl:call-template></b>
+
+ <!-- put English text -->
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="p" />
+ </p>
+ </li>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </ul>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- template: "html-news-list-press" -->
+ <xsl:template name="html-news-list-press">
+ <xsl:param name="news.press.xml-master" select="'none'" />
+ <xsl:param name="news.press.xml" select="'none'" />
+
+ <xsl:for-each select="document($news.press.xml-master)//descendant::year">
+ <xsl:param name="year" select="name" />
+
+ <xsl:for-each select="month">
+ <xsl:param name="month" select="name" />
+
+ <h1>
+ <!-- generate month headings -->
+ <xsl:call-template name="html-news-month-headings">
+ <xsl:with-param name="year" select="$year" />
+ <xsl:with-param name="month">
+ <xsl:call-template name="transtable-lookup">
+ <xsl:with-param name="word-group" select="'number-month'" />
+ <xsl:with-param name="word" select="$month" />
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </h1>
+
+ <ul>
+ <xsl:for-each select="story">
+ <xsl:variable name="url"><xsl:value-of select="url"/></xsl:variable>
+ <xsl:variable name="site-url"><xsl:value-of select="site-url"/></xsl:variable>
+
+ <!-- search localized items per story(URL) basis -->
+ <xsl:param name="localizeditems"
+ select="document($news.press.xml)
+ //descendant::year[name = $year]
+ /month[name = $month]
+ /story[url = $url]" />
+
+ <xsl:param name="anchor-position" select="position()" />
+
+ <xsl:choose>
+ <xsl:when test="$localizeditems">
+ <xsl:for-each select="$localizeditems">
+ <li><p>
+ <a><xsl:attribute name="name">
+ <xsl:call-template name="html-news-generate-anchor">
+ <xsl:with-param name="label" select="local-name()" />
+ <xsl:with-param name="year" select="$year" />
+ <xsl:with-param name="month" select="$month" />
+ <xsl:with-param name="pos" select="$anchor-position" />
+ </xsl:call-template>
+ </xsl:attribute></a>
+ <a href="{$url}"><b><xsl:value-of select="name"/></b></a><br/>
+ <a href="{$site-url}"><xsl:value-of select="site-name"/></a>,
+ <xsl:value-of select="author"/><br/>
+ <xsl:copy-of select="p/child::node()"/>
+ </p>
+ </li>
+ </xsl:for-each>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:for-each select=".">
+ <li><p>
+ <a><xsl:attribute name="name">
+ <xsl:call-template name="html-news-generate-anchor">
+ <xsl:with-param name="label" select="local-name()" />
+ <xsl:with-param name="year" select="$year" />
+ <xsl:with-param name="month" select="$month" />
+ <xsl:with-param name="pos" select="$anchor-position" />
+ </xsl:call-template>
+ </xsl:attribute></a>
+
+ <a href="{$url}"><b><xsl:value-of select="name"/></b></a><br/>
+ <a href="{$site-url}"><xsl:value-of select="site-name"/></a>,
+ <xsl:value-of select="author"/><br/>
+ <xsl:copy-of select="p/child::node()"/>
+ </p>
+ </li>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </ul>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- template: "html-news-datelabel" (for l10n) -->
+ <xsl:template name="html-news-datelabel">
+ <xsl:param name="year" />
+ <xsl:param name="month" />
+ <xsl:param name="day" />
+
+ <xsl:value-of select="concat($day, ' ', $month, ', ', $year, ':')" />
+ </xsl:template>
+
+ <!-- template: "html-news-generate-anchor" (for l10n) -->
+ <xsl:template name="html-news-generate-anchor">
+ <xsl:param name="label" />
+ <xsl:param name="year" />
+ <xsl:param name="month" />
+ <xsl:param name="day" />
+ <xsl:param name="pos" />
+
+ <xsl:value-of select="concat(
+ $label,
+ format-number($year, '0000'),
+ format-number($month, '00'))" />
+ <xsl:if test="$label = 'event'" >
+ <xsl:value-of select="format-number($day, '00')" />
+ </xsl:if>
+ <xsl:value-of select="format-number($pos, ':00')" />
+ </xsl:template>
+
+ <!-- template: "html-news-month-headings" (for l10n) -->
+ <xsl:template name="html-news-month-headings">
+ <xsl:param name="year" />
+ <xsl:param name="month" />
+
+ <xsl:value-of select="concat($month, ' ', $year)" />
+ </xsl:template>
<!-- template: "html-list-advisories"
generate a list of all security advisories -->
More information about the freebsd-doc
mailing list