Django localeurl:在视图中更改呈现的URL中的语言和语言前缀

时间:2010-04-13 18:54:01

标签: django localization

我正在进行一些IP本地化,需要在视图中设置语言。 使用translation.activate可以更改语言,但会更改呈现的页面 仍然在其URL中具有默认语言前缀。 有没有办法改变渲染的URL?

感谢

jul

2 个答案:

答案 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),但我没有尝试过这样的事情。