I am trying to do a page in different languages with xml/xsl. I want to have only one xml and one xsl. On my page Url I have a parameter pLanguage that I think I can use to look if I have selected English or Dutch.
I tried with this code but I don’t know how I put it together:
First I make variables of all the words who has to been translated like this:
<xsl:variable name="lang.pageTitle" select="'This is the title in English'"/>
To get the pageTitle in the template I now can use
<xsl:value-of select="$lang.pageTitle"/>
I thought to replace the first line of code above by using a if-else statement to test if my choosen language is EN or NL like this:
<xsl:choose>
<xsl:when test="$choosenLanguage = ‘NL’">
<xsl:variable name="lang.pageTitle" select="Titel in het nederlands'"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="lang.pageTitle" select="'This is the title in English'"/>
</xsl:otherwise>
</xsl:choose>
But I get the error: java.lang.IllegalArgumentException: can't parse argument number $lang.opdracht
Here is a complete example how this can be done in a generic way:
When this transformation is applied on any XML document (not used), the wanted, correct result (the title is generated in accordance with the global/external parameter
$pLang
) is produced:Do note:
It is recommended that all strings be maintained in an XML document that is separate from the XSLT stylesheet file(s). This allows the strings to be modified/added/deleted without changing the XSLT code.
To access the strings from another XML document the code remains almost the same, the only difference is that the argument to the
document()
function now is the URI to the strings XML document.