Oscar,
It's probably safer to pass the translated string as a template variable from
the view callable, since Pyramid's i18n machinery only picks up translation
strings marked via i18n:translate and i18n:attributes in .pt files IIRC.
Basically, you would pass "products" as a string marked for translation to your
template from the view.
The template would be the following (using your original code)...
> <p><a href="/${request.locale_name}/${products}"><img src="products.jpg"
> alt="" /></a></p>
While the view would mark the "products" string for i18n as follows...
> from pyramid.i18n import TranslationString as _
...
@view_config(route_name='products', renderer='templates/products.pt')
def products_view():
...
return dict(products=_(u'products'))
HTH,
Kamal
On Aug 20, 2014, at 4:13 PM, Oscar Curero <[email protected]> wrote:
>
>
> On Wednesday, August 20, 2014 7:28:28 PM UTC+2, Wichert Akkerman wrote:
>
> > On 20 Aug 2014, at 19:21, Oscar Curero <[email protected]> wrote:
> >
> > Hi,
> >
> > I'm building my first application using pyramid and chameleon and I'm
> > having problems with the localized URL schema. It's something like this:
> >
> > /en/products
> > /es/productos
> > /ca/productes
> >
> > The problem starts when I need to make the HTML templates. For example, I
> > want to make the following template:
> >
> > <p><a href="/${request.locale_name}/${products}"><img src="products.jpg"
> > alt="" /></a></p>
>
> The problem here is that ${products} assumes that you have a python variable
> named "products" at hand and want to insert its value in the template. But
> since you have no such variable you get a NameError exception. If you goal is
> to make the word "products" translatable you can do this: ${_("products")} .
>
> Wichert.
>
> Thanks Wichert. If I try what you say with nothing else, it doesn't work yet:
>
> NameError: _
>
> - Expression: "${request.locale_name}/${_('products')}"
> - Filename: ... ate/templates/products.pt
> - Location: (line 10: col 30)
> - Source: ... <p><a href="/${request.locale_name}/${_('products')}"><img
> ...
>
> However, if I add at the top of the template the following statement, it
> works as expected:
>
> <?python from pyramid.i18n import TranslationString as _ ?>
>
> Is this the way it should work?
>
> Thanks!
>
> --
> You received this message because you are subscribed to the Google Groups
> "pylons-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/pylons-discuss.
> For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/pylons-discuss.
For more options, visit https://groups.google.com/d/optout.