Django i18n特定的行为设置

时间:2015-08-27 19:33:39

标签: python django internationalization django-i18n

我需要django i18n这样工作: openpyxl将会话语言设置为site.com/lang/,将其写入Cookie并将用户重定向到lang。如果它是第一次访问者并且未指定前缀,则显示默认的lang。

很抱歉这个基本问题,urls.py和中间件的例子可能会非常感激。

1 个答案:

答案 0 :(得分:0)

Django提供了与您尝试做的非常相似的解决方案。它被称为The set_language Redirect view。不同之处在于它希望语言成为POST参数。您可能需要考虑使用此方法与自定义解决方案。

如果这不是您正在寻找的内容,您可以编写自己的重定向视图,将语言设置为lang并重定向到site.com

class SetLanguageView(RedirectView):
    url = reverse('home')

    def get(self, request, *args, **kwargs):
        response = super(self, SetLanguageView).get(request, *args, **kwargs)
        lang = kwargs.get('lang')
        if lang:
            # To set the language for this session
            request.session[settings.LANGUAGE_SESSION_KEY] = lang
            # To set it as a cookie
            response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang,
                                max_age=settings.LANGUAGE_COOKIE_AGE,
                                path=settings.LANGUAGE_COOKIE_PATH,
                                domain=settings.LANGUAGE_COOKIE_DOMAIN)
        return response

urls.py中你会有像

这样的东西
urlpatterns = patterns('',
    url(r'^(?P<lang>\w+)/$', RedirectView.as_view(), name='lang_redirect'),