我使用django.middleware.locale.LocaleMiddleware获取网站i18n'ed并通过set_language redirect制作语言“切换器”。
我无法理解一些事情:
为什么在process_responce期间调用translation.deactivate
(source on github)?
这是否意味着我无法使用此中间件? (它只显示一个不同语言的页面,然后切换回来。)
答案 0 :(得分:2)
translation.deactivate
是因为当前语言存储在全局(线程局部)变量中。它在请求进入时设置,并且在该请求完成时必须取消设置以防止它“泄漏”到下一个请求中(例如,想象一个线程处理必须本地化为葡萄牙语的请求,然后是另一个请求,其中未设置本地化。如果未停用葡萄牙语本地化,则下一个请求也将本地化为葡萄牙语。)