在 django 中使用多语言和 localeurl

发布于 2024-08-21 23:32:06 字数 911 浏览 4 评论 0 原文

使用 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/ 将我重定向到 < a href="http://www.mysite.com/ru/" rel="nofollow noreferrer">http://www.mysite.com/ru/ 和“name”变量获取俄语本地化。现在还可以...

但是...

输入 http://www.mysite.com/en/< /a> 显示相同的俄语本地化变量。

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

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

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

Using django-multilingual and localeurl.

Small sample of my main page view:

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})

Entering http://www.mysite.com/ redirects me to http://www.mysite.com/ru/ and "name" variable gets russian localization. For now it's ok...

But...

Entering http://www.mysite.com/en/ shows me same russian loclized variable.

During my experiments with debuger I've discovered:

  • request.LANGUAGE_CODE is changing properly according to /en/ or /ru/ url suffix (thanx to localeurl)
  • invoking multilingual.languages.set_default_language() makes "name" variable change loclization

The question is: should I change language of django-multilingual to request.LANGUAGE_CODE in each of my view myself, or it must be solved automaticly and I've done something wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

五里雾 2024-08-28 23:32:06

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

I have the same problem, after rotation with positions in MIDDLEWARE_CLASSES I've got the right order:

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', 
)

I comment #'django.middleware.locale.LocaleMiddleware' its doing the same as 'localeurl.middleware.LocaleURLMiddleware' I think.

冷默言语 2024-08-28 23:32:06

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

after removing django.middleware.locale.LocaleMiddleware it worked for me also ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文