【问题标题】:Using multilingual and localeurl in django在 django 中使用多语言和 localeurl
【发布时间】:2010-02-16 20:10:45
【问题描述】:

使用 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 后缀正确更改(感谢 localeurl)
  • 调用 multilingual.languages.set_default_language() 使“名称”变量更改本地化

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

【问题讨论】:

    标签: python django django-multilingual


    【解决方案1】:

    我有同样的问题,在 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' 相同。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 2016-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多