Advice: Using translated strings as keys is a very bad idea (sorry, my fault).
As soon as other language is used, dictionaries and lists are broken anyway (some values stored translated, some other stored untranslated...) I think it is better to allways use untranslated strings internally (in key, lists, fields), and then translate them at the view. Best regards, Mariano Reingart http://www.aprug.com.ar http://www.sistemasagiles.com.ar http://reingart.blogspot.com On Tue, May 4, 2010 at 8:45 PM, Mariano Reingart <[email protected]> wrote: > Seems translated texts cannot be used as keys for dictionaries or > values to be iterated for lists/tuples: > > SPONSOR_LEVELS=(T("Organizer"),T("Sponsor")) > ... > random.shuffle(response.sponsors[SPONSOR_LEVELS[1]]) > > Traceback (most recent call last): > File "gluon/restricted.py", line 178, in restricted > exec ccode in environment > File "/home/web2py/applications/rafaela2010/models/menu.py", line > 85, in <module> > random.shuffle(response.sponsors[SPONSOR_LEVELS[1]]) > KeyError: <gluon.languages.lazyT object at 0x89620ec> > > Iterating over a T'ed values causes the same bug: > > Traceback (most recent call last): > File "gluon/restricted.py", line 178, in restricted > exec ccode in environment > File "/home/web2py/applications/raf10dev/views/plugin_flatpages.html", > line 112, in <module> > for sponsor_level in SPONSOR_LEVELS: > KeyError: <gluon.languages.lazyT object at 0x89e2f4c> > > > Workaround: > ------------------ > > Converting translated text to str solves the problem: > > random.shuffle(response.sponsors[str(SPONSOR_LEVELS[1])]) > > or > > for sponsor_level in [str(l) for l in SPONSOR_LEVELS]: > > Best regards, > > Mariano Reingart > http://www.sistemasagiles.com.ar > http://reingart.blogspot.com >

