在django中使用多语言和localeurl

时间:2010-02-16 20:10:45

标签: python django django-multilingual

使用django-multilingual和localeurl。

我的主页面视图的小样本:

def main(request): #View for http://www.mysite.com/
    name = Dog.objects.all()[0].full_name #this is a translated field
    return render_to_response("home.html", {"name" : name})

输入http://www.mysite.com/会将我重定向到http://www.mysite.com/ru/,并且“name”变量会获得俄语本地化。现在好了......

但是...

输入http://www.mysite.com/en/向我显示相同的俄语loclized变量。

在我对debuger的实验中,我发现:

  • request.LANGUAGE_CODE根据/ en /或/ ru / url后缀(thanx到localeurl)正确更改
  • 调用multilingual.languages.set_default_language()使“name”变量更改loclization

问题是:我是否应该将django-multilingual的语言改为request.LANGUAGE_CODE在我自己的每个视图中,或者它必须自动解决并且我做错了什么?

2 个答案:

答案 0 :(得分:3)

我有同样的问题,在MIDDLEWARE_CLASSES中的职位轮换后我得到了正确的顺序:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    #'django.middleware.locale.LocaleMiddleware',
    'localeurl.middleware.LocaleURLMiddleware',
    'multilingual.middleware.DefaultLanguageMiddleware',
    'multilingual.flatpages.middleware.FlatpageFallbackMiddleware',
    'django.middleware.common.CommonMiddleware', 
)

我评论#'django.middleware.locale.LocaleMiddleware'它的做法与'localeurl.middleware.LocaleURLMiddleware'相同。我想。

答案 1 :(得分:1)

删除django.middleware.locale.LocaleMiddleware后,它也适用于我...