3

是否有任何简单的方法可以根据域在 Django 网站上选择特定语言版本的页面?(除了语言代码外,两种语言的 URL 都是相同的,所以我希望mysite.com/teachers/managemysite.com/en/teachers/manage(使用 'en' 默认完成)mesito.es/teachers相同,mesito.es/es/teachers并且与 - 不,url 本身就像 'teachers/manage ' 永远不会被翻译,所以我不想为两种语言配置 2 组 url)。

注意:我发现的所有其他解决方案都意味着我也想翻译 URL,但我知道我永远不想为这个特定的网站翻译 URL 和 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 网站的默认语言为英语)

4

3 回答 3

4

你为什么不编写你在LocaleMiddleware之后添加的 onw 微型中间件类,它只是添加语言,如果根据你在该线程中解释的规则还没有识别出语言。

于 2012-10-01T13:38:26.993 回答
3

您可能想看看Transurlvania,因为它允许您将域映射到一种语言:

MULTILANG_LANGUAGE_DOMAINS = {
    'en': ('www.example-en.com', 'English Site'),
    'fr': ('www.example-fr.com', 'French Site')
}
于 2012-10-01T08:34:25.483 回答
0

您可以为每个域使用单独的站点,并使用视图混合或中间件来检查站点 ID 并做出适当的反应。

于 2012-10-01T07:40:38.883 回答