我正在进行一些IP本地化,需要在视图中设置语言。 使用translation.activate可以更改语言,但会更改呈现的页面 仍然在其URL中具有默认语言前缀。 有没有办法改变渲染的URL?
感谢
jul
答案 0 :(得分:2)
尝试查看与LocaleURLMiddleware相同的内容:
translation.activate(locale)
request.LANGUAGE_CODE = translation.get_language()
PS。您使用{%url%}和{%locale_url%}吗?
答案 1 :(得分:0)
问题是中间件已经在Request中设置了语言的值,所以你必须添加自己的中间件(我相信CommonMiddleware之后)。在您的中间件类中,您的process_request方法将设置语言,您的process_response方法将重置该语言。
http://docs.djangoproject.com/en/dev/topics/http/middleware/
可能有一个不使用中间件的快捷方式(手动设置请求LANGUAGE_CODE值并在视图中执行translation.activate),但我没有尝试过这样的事情。