RE: [xsl] Parameters in localized messages

Subject: RE: [xsl] Parameters in localized messages
From: "Jeroen Hellingman" <jeroen@xxxxxxxx>
Date: Tue, 20 Apr 2004 10:44:58 -0400
Thanks for the hints!

I think the solution to my problem will be something like:

Having a messages.xml with:

<messages>
	<message name="msgContact" lang="en">Please contact <param 
name="personalName"/> for details.</message>
	<message name="msgContact" lang="nl">Neem contact op met <param 
name="personalName"/> voor details.</message>
</messages>


A doc.xml with:

<content/>

and a xsl stylesheet with:

<xsl:stylesheet version="2.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

	<xsl:variable name="lang" select="'en'"/>
	<xsl:variable name="messages" select="document
('messages.xml')"/>

	<!-- THIS REQUIRES XSLT 2.0 -->
	<xsl:template match="content">
		<xsl:variable name="params">
			<params>
				<param 
name="personalName">Jeroen</param>
			</params>
		</xsl:variable>
		<xsl:call-template name="formatMessage"/>
			<xls:with-param name="id" select="msgContact"/>
			<xls:with-param name="params" select="$params"/>
		</xsl:call-template>
	</xsl:template

	<xsl:template name="formatMessage">
		<xsl:param name="name"/>
		<xsl:param name="params"/>
		<xsl:apply-templates select="$messages/messages/message
[@lang=$lang && @name=$name]" mode="formatMessage">
			<xls:with-param name="params" select="$params"/>
		</xsl:apply-templates>
	</xsl:template>

	</xls:template match="param" mode="formatMessage">
		<xsl:param name="params"/>
		<xsl:value-of select="$params/params/param[@name=current
()/@name]"/>
	<xsl:template>

	<xsl:template match="*" mode="formatMessage">
		<xsl:copy>
			<xsl:copy-of select="@*"/>
			<xsl:apply-templates mode="formatMessage"/>
		</xsl:copy>
	</xsl:template>

</xsl:stylesheet>


Jeroen.

Current Thread