cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc Salvetti <salvetti.m...@gmail.com>
Subject Re: [2.1] Non-trivial uses of i18n transformer
Date Mon, 23 May 2016 13:39:41 GMT
Hi Chris,

Try something like this <a title="some.catalogue:some.text"
I18n-attr="title"/>

That's by memory but should find the exact syntax in  the doc

Hope this helps,
Marc
Le 23 mai 2016 8:31 PM, "Christopher Schultz" <chris@christopherschultz.net>
a écrit :

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> All,
>
> I'm finally getting around to internationalizing the XSLT-based parts
> of my application, and I'm running into a problem with non-trivial
> uses of <i18n:text> in a template.
>
> Here's an excellent example of the kind of thing I'm having trouble
> with. I have a single XML document going through a pipeline with a few
> transformations in it. There is one major transform where pretty much
> everything interesting happens. I'd like to use <i18n> in there to
> produce an HTML <a> element with a localized "title" attribute.
> Something like this:
>
> <xsl:template match="p:foo">
>   <a href="..." title="This is some English text">click me</a>
> </xsl:template>
>
> Localizing the "click me" text is trivial. Doing the same with the
> "title" attribute is not.
>
>    <a title="<i18n:text key="some.text" />"  [...] >
>
> That obviously won't work because the attribute won't be parsed and
> evaluated by the XSLT parser. Use of {} around it doesn't work because
> it's an element, not an expression.
>
>   <xsl:element name="a">
>     <xsl:attribute name="title">
>       <i18n:text key="some.text" />
>     </xsl:attribute>
>     [...]
>   </xsl:element>
>
> That doesn't work because <xsl:attribute> evidently can't contain
> <i18n:text>. At first, this irritated me but then I realized that this
> would never work, because the second case would basically degenerate
> into the first case after the <map:transform> completed its work for
> this template before I (later) ran the I18nTransformer.
>
> The only idea I've had is to flip the current i18n process on its head
> and instead do this:
>
>   <map:match pattern="/foo">
>     <map:generate src="my.xml.document.xml" />
>
>     <map:transform src="cocoon://localized-transform.xsl" />
>
>     <map:serialize />
>   </map:match>
>
>   <map:match pattern="/localized-transform.xsl">
>     <map:generate src="original.xsl" />
>
>     <map:transform type="i18n">
>       <map:parameter name="locale" value="en_US" />
>     </map:transform>
>
>     <map:serialize />
>   </map:match>
>
> So instead of transforming the input document with an
> internationalized stylesheet, then transforming the result with the
> i18n transformer, I first transform the transformer itself to get a
> localized transformer, and transform the input document with *that*.
>
> Is that "recommended technique"? Alternatively, is that entirely stupid?
>
> If this is a good idea, how specifically can I accomplish what I have
> above? I haven't yet tried it, but I'm concerned I'll have the same
> problem with elements not being allowed in other elements.
>
> Any suggestions?
>
> Thanks,
> - -chris
> -----BEGIN PGP SIGNATURE-----
> Comment: GPGTools - http://gpgtools.org
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iEYEARECAAYFAldDBi0ACgkQ9CaO5/Lv0PC3HQCfQLoPna+oFFoWxXggz0rKwxis
> vyAAn1IrMa5SNcy+8fhr6Wt5JxdJ8abT
> =i48t
> -----END PGP SIGNATURE-----
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>

Mime
View raw message