|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Replacing all Occurences of a String
To add to Chris Bayes suggestion, here is another localization solution
If the stylesheet is only going to be using one language, rather than
loading a page with all the languages, you can choose to load the language
the page is going to be displayed in.
I use XML simular to:
english.xml
<words>
<jan>January</jan>
<feb>February</feb >
</words>
german.xml
<words>
<jan>Januar</jan>
<feb>Februar</feb>
</words>
french.xml
<words>
<jan>Janvier</jan>
<feb>...</feb>
</words>
By doing this I use document() and set a global variable by calling it like
so:
<xsl:variable name="language" select="document(german.xml'))/words" />
An XSL which can use this is shown below
XSL
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:variable name="language" select="document(german.xml'))/words" />
<xsl:template match="/">
<translated-phrases>
German Months
<translation>
<xsl:value-of select="$language/jan" />
</translation>
<translation>
<xsl:value-of select="$language/feb" />
</translation>
</translated-phrases>
</xsl:template>
</xsl:stylesheet>
Cheers,
Tim Watts
> -----Original Message-----
> From: Chris Bayes
>
> Have a look at
> http://www.biglist.com/lists/xsl-list/archives/200008/msg01300.html
> for some ideas on internationalization.
> You can extend this idea to handle
> your month conversions if your datafile looked like
> <dictionary>
> <months lang="en">
> <month abbr="jan">january</month>
> ...
> <month abbr="dec">december</month>
> </months>
> <months lang="fr">
> <month abbr="jan">janvier</month>
> ...
>
> Then to convert $monthtotrans from french to english abbreviation
> something like
> <xsl:value-of
> select="document('months.xml')/dictionary/months[@lang='en']/m
> onth[posit
> ion()/document('months.xml')/dictionary/months[@lang='fr']/mon
> th[@abbr=$
> monthtotrans]/@abbr
> Or
> <xsl:variable name="monthnum"
> select="count(preceding-sibling::*/document('months.xml')/dict
> ionary/mon
> ths[@lang='fr']/month[@abbr=$monthtotrans])" />
> <xsl:value-of
> select="document('months.xml')/dictionary/months[@lang='en']/m
> onth[$mont
> hnum]/@abbr" />
>
> Ciao Chris
>
>
> > -----Original Message-----
> > From: Roger
> >
> > The problem is I have all months and also all languages, like:
> >
> > <sfzSprache>Italian/German/Swiss-German/French</sfzLanguage>
> >
> > and I want in the end:
> >
> > <sfzSprache>Italienisch/Deutsch/Schweizerdeutsch/Französisch</
> > sfzLanguage>
> >
> >
> > If I only would have "German" or "October" it would be easy.
> > I would then transform it like this:
> >
> > <xsl:choose>
> > <xsl:when test="string-length(sfzSprache)>0">
> > Sprache:
> > <xsl:choose>
> > <xsl:when test="string(sfzSprache)='German'">
> > Deutsch <br />
> > </xsl:when>
> > <xsl:when test="string(sfzSprache)='French'">
> > Französisch <br />
> > </xsl:when>
> > <xsl:when test="string(sfzSprache)='English'">
> > Englisch<br />
> > </xsl:when>
> > <xsl:otherwise>
> > <xsl:value-of select="sfzSprache"/><br />
> > </xsl:otherwise>
> > </xsl:choose>
> >
> > roger
> >
> >
> > > > <sfzRelease>January, February 2001</sfzRelease>
> > > >
> > > > I want at the end:
> > > >
> > > > <sfzRelease>Januar, Februar 2001</sfzRelease>
> > >
> > > If you have a replace string template then probably the
> > > easiest thing to do is make a variable containg a node set of
> > > replacements eg
> > >
> > > <y en="January" de="Januar"/>
> > >
> > > then just make a recusive template that works down a list of
> > > y nodes, doing a replacement using the first y node then
> > > calling itself on the rest of the list.
> > >
> > > David
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








