On May 2, 2012, at 8:58 AM, Jonathan Lundell <[email protected]> wrote:

> On May 1, 2012, at 4:27 PM, ender72 wrote:
>> Hi,
>> I'm reading "web2py application development cookbook",
>> page 277
>> "To specify a language for outgoing URLs using URL(), set request.lang to 
>> one of the supported languages [...]".
> 
> The book (and the example documentation) are wrong; not sure how that slipped 
> through.
> 
> Use URL(..., lang='it')
> 
> The incoming language (from the incoming URL) is stored in request.language. 
> The outgoing language ends up in request.uri_language, but it's best to 
> specify it as an argument to URL().
> 
> Notice that it's up to you to connect these to the translation system; that's 
> not currently automatic, I don't think.

IIRC the rationale for a separate outgoing variable is to keep from clobbering 
the incoming language. On reflection it seems to me that the outgoing language 
wants to stay in the URL object, not in request, to better support multilingual 
operations. 

> 
> 
>> 
>> Mmm... maybe something's wrong, because if I put this code in a view:
>> 
>> {{
>>  request.lang='it'
>>  link_it = URL('about', 'index')
>>  request.lang='en'
>>  link_en = URL('about', 'index')
>>  request.lang='fr'
>>  link_fr = URL('about', 'index')
>> }}
>> {{=link_it}}, {{=link_en}}, {{=link_fr}}
>> 
>> results are:
>> /en/azienda, /en/azienda, /en/azienda 
>> (if request.url is http://127.0.0.1:8000/app/en/<controller>/<function>/)
>> or
>> /it/azienda, /it/azienda, /it/azienda 
>> (if request.url is http://127.0.0.1:8000/app/it/<controller>/<function>/)
>> etc...
>> 
>> my routes.py is
>> 
>> routers = dict(
>>    BASE = dict(
>>        default_application='app',
>>        default_controller = 'home',
>>        default_function = 'index'
>>    ),
>>    casal = dict(
>>        map_hyphen = True,
>>        languages = ['it', 'en', 'fr'],
>>        default_language = 'it',
>>    ),
>> )
>> 
>> 
>> Thanks.
> 
> 

Reply via email to