django - 了解LocaleMiddleWare(translation.deactivate)

时间:2012-06-09 12:31:20

标签: django internationalization

我使用django.middleware.locale.LocaleMiddleware获取网站i18n'ed并通过set_language redirect制作语言“切换器”。

我无法理解一些事情:

  1. 为什么在process_responce期间调用translation.deactivatesource on github)?

  2. 这是否意味着我无法使用此中间件? (它只显示一个不同语言的页面,然后切换回来。)

1 个答案:

答案 0 :(得分:2)

调用

translation.deactivate是因为当前语言存储在全局(线程局部)变量中。它在请求进入时设置,并且在该请求完成时必须取消设置以防止它“泄漏”到下一个请求中(例如,想象一个线程处理必须本地化为葡萄牙语的请求,然后是另一个请求,其中未设置本地化。如果未停用葡萄牙语本地化,则下一个请求也将本地化为葡萄牙语。)