gpt4 book ai didi

python - 如何在 Django 1.6 中构建多语言网站

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:05 26 4
gpt4 key购买 nike

我正在 Django 中编写一个简单的多语言网站,但在切换语言方面遇到了一些困难。我认为每种语言都有不同的 url 会很好(例如,英语站点为/en/contact/,德语站点为/de/kontakt/)。也许这不仅看起来更好,而且在 SEO 环境中也有意义。

所以我在 urls.py 中有:

urlpatterns = pattern(‘’,
url(r’^de/kontakt/$’, mysite.views.DeKontaktView, name=‘kontakt’,),
url(r’^en/contact/$’, mysite.views.EnContactView, name=‘contact’,),
)

现在我想在每个页面(在基本模板中)上都有链接来在德语和英语之间切换语言。在 Django 文档中,我找到了“set_language 重定向 View ”( https://docs.djangoproject.com/en/1.6/topics/i18n/translation/#the-set-language-redirect-view )。

我的问题是切换语言时在哪里以及如何告诉 View 应该重定向到哪里。我并不总是想重定向到我的网站的首页,而是重定向到其他语言的相应页面 - 它具有完全不同的 url - 不仅是 url 中的不同语言前缀。

由于“set_language 重定向 View ”似乎使用引荐来源网址,除非帖子数据中有下一个参数,所以我的第一个想法是这样的:

views.py:

def EnContactView(request):

if request.LANGUAGE_CODE == ‘en’:
return render_to_response(‘en/contact.html’), context)
else:
return redirect(‘/de/kontakt/‘)

def DeKontaktView(request):

if request.LANGUAGE_CODE == ‘de’:
return render_to_response(‘de/kontakt.html’), context)
else:
return redirect(‘/en/contact/‘)

但我认为这可能不是一个好的解决方案,因为这也会根据浏览器语言进行重定向。例如:如果使用浏览器语言“en”的人直接访问我们的德语网址之一,例如通过谷歌。由于 session 中既没有 cookie“en”,也没有语言选择,访问者将被重定向到英语 url - 这不是有意的。

那么针对这些情况的最佳实践是什么?总结一下:我有完全不同的语言 url - 不仅仅是 url 中不同的语言前缀。对于每种语言,我都有一个模板(目录 templates/en/和 templates/de/)。

  • 如何在不同语言的相应页面之间切换?
  • 顺便问一下:是否可以不使用表单作为语言切换器,而是使用简单的链接“de”和“en”?

如果有人能帮助我,那就太好了。对于 django 菜鸟来说,“语言问题”是相当令人困惑的。

最佳答案

https://docs.djangoproject.com/en/1.6/topics/i18n/translation/#translating-url-patterns

#setting.py
gettext = lambda s: s

LANGUAGES = (
('en', gettext('English')),
('de', gettext('De')),

)

#url
from django.http import Http404
from django.conf.urls.i18n import i18n_patterns

urlpatterns += i18n_patterns('',
url(r'^contact/$', mysite.views.ContactView, name='contact'),
)

#view
def ContactView(request)
if request.LANGUAGE_CODE == 'de':
return render_to_response('de/kontakt.html')
if request.LANGUAGE_CODE == 'en':
return render_to_response('en/contact.html')
raise Http404

关于python - 如何在 Django 1.6 中构建多语言网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20096630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com