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" <ch...@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-unsubscr...@cocoon.apache.org > For additional commands, e-mail: users-h...@cocoon.apache.org > >