Le 02/04/2012 07:16, Rodrigo Augosto a écrit :
I have a lib/languages.py file only with a dict format e.g.:
en = {}
en["farewell"] = "goddbye"
es = {}
es["farewell"] = "Adiós"
Also I have a lib/basehandler.py where I use language.py and this
basehandler has a Unicode literal (# -*- coding: utf-8 -*-)
The problem is that when I render a template in Spanish (es), it has on
its html "Adi&ocuate;s" and off course the text the the user see is
"Adi&oaucte;s" instead "Adiós"
I tried to use on languages.py
es["farewell"] = "Adiós"
or add Unicode literal (# -*- coding: utf-8 -*-) in this file, but
nothing work.
Hi,
I looks like your templates (Jinja?) have auto-escaping enabled. When
you pass them "Adiós", they convert it to an HTML-safe
representation so that end-users see the same as what you passed.
Now, if you have a string that you know contains safe HTML, you can use
the |safe Jinja filter to disable auto-escaping for that string.
But what if, later, you want to use your translations in a non-HTML
context? It is probably better to have non-HTML-encoded, real unicode
strings in your languages.py file, and let the template escaping do its job.
To make unicode literal strings on Python 2.x, either use the u prefix:
es["farewell"] = u"Adiós"
or add "from __future__ import unicode_literals" at the top of the file
to make all strings in this file unicode. (Use the b"foo" for byte-strings.)
Regards,
--
Simon Sapin
--
You received this message because you are subscribed to the Google Groups
"pocoo-libs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/pocoo-libs?hl=en.