在基于域的Django网站上选择特定语言版本的网页是否有任何一种简单的方法?(两种语言的网址相同,但语言除外)代码,所以我希望mysite.com/teachers/manage
与mysite.com/en/teachers/manage
相同(使用'en'默认值完成)和mesito.es/teachers
与mesito.es/es/teachers
相同 - 并且不,像'教师/管理'这样的网址永远不会被翻译,所以我不想为这两种语言配置2套网址。)
注意:我发现的所有其他解决方案都暗示我也想翻译网址,但我知道我永远不会想要为这个特定网站翻译网址和manae 2套。
注意2(忘记添加):大多数网站实际上都是以django-cms为基础的,所以django-cms具体的解决方案会有所帮助......
好吧,通过重定向视图,我通过这个丑陋的黑客得到了我想要的东西(但仍然没有正确和简单方式来做到这一点? ..):
## mysite.urls:
urlpatterns = patterns('',
(r'^$', 'mysite.views.language_router')
## mysite.views:
def language_router(request):
if request.META['HTTP_HOST'].find('myspanishdomain.com') != -1 \
and request.META['PATH_INFO'] == '/' :
return HttpResponseRedirect('http://www.myspanishdomain.com/es/')
return cms.views.details(request, '')
(myenglishdomain.com网站的默认语言为英文)
答案 0 :(得分:3)
您可能需要查看Transurlvania,因为它允许您将域映射到语言:
MULTILANG_LANGUAGE_DOMAINS = {
'en': ('www.example-en.com', 'English Site'),
'fr': ('www.example-fr.com', 'French Site')
}
答案 1 :(得分:3)
为什么不编写您在middleware class之后添加的LocaleMiddleware,如果根据您在此处说明的规则尚未确定语言,则只添加语言在那个帖子里。
答案 2 :(得分:0)
您可以为每个域使用单独的site,并使用视图mixin或中间件来检查网站ID并做出适当的反应。