1

使用 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/显示相同的俄语本地化变量。

在我使用调试器的实验中,我发现:

  • request.LANGUAGE_CODE 根据 /en/ 或 /ru/ url 后缀正确更改(thanx to localeurl)
  • 调用 multilingual.languages.set_default_language() 使“名称”变量更改本地化

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

4

2 回答 2

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' 相同。

于 2010-02-23T22:38:36.077 回答
1

删除 django.middleware.locale.LocaleMiddleware 后它也对我有用......

于 2010-04-19T11:26:18.950 回答