2012-10-01 21 views
2

是否有任何braindead簡單的方法在Django網站上根據域名選擇語言特定版本的頁面?(除了語言代碼外,這兩種語言的網址都是相同的,因此我希望mysite.com/teachers/managemysite.com/en/teachers/manage相同(默認爲'en')和mesito.es/teachersmesito.es/es/teachers相同 - 且網址爲他們自己喜歡'老師/管理'將永遠不會翻譯,所以我不想爲兩種語言配置2套網址)。按Django域名分類的語言

注意:我發現的所有其他解決方案意味着我也想翻譯這些網址,但我知道我永遠不會想要爲這個特定的網站翻譯它們的URL和manae 2套。

注2(忘了補充):大部分的網站實際上是Django的CMS爲主,這樣的Django-CMS的具體解決方案將有助於...


OK,我得到了我通過重定向鑑於這種醜陋的黑客想(但仍,是不是有簡單的方式做到這一點...?):

## 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

你看過什麼其他解決方案? – mbaechtold

+0

我來這http://djangosnippets.org/snippets/271/並通過django網站文檔挖掘,但我不想創建不同的網站...如果只有request.path將包含該死的語言前綴在其中我可能會破壞重定向的觀點或某種醜陋而可操作的想法...但即使這樣也能按預期工作。 i18n和l10n確實是一個婊子:) – NeuronQ

回答

3

你可能想在Transurlvania看看,因爲它使您可以映射域的語言:

MULTILANG_LANGUAGE_DOMAINS = { 
    'en': ('www.example-en.com', 'English Site'), 
    'fr': ('www.example-fr.com', 'French Site') 
} 
+0

謝謝!是的,這可能是我重新使用代碼庫並使其使用站點框架後我會用到的......但是我會保持上面的醜陋黑客,直到我有時間/理由正確地做事。 – NeuronQ

0

您可以爲每個域使用單獨的site,並使用查看mixin或中間件來檢查站點ID並作出適當的反應。

+0

這就是問題所在,我不想要一個自定義網站。目前的網站使用django-cms來混合一些頁面和一些自定義的應用程序,我不想改變它的任何東西。 – NeuronQ

+0

因此,鏈接文檔的第二段解釋爲:「如果您的單個Django安裝支持多個站點,並且需要以某種方式區分這些站點,請使用它。」這是在多個域上使用一個代碼庫的好方法。 – dokkaebi

+0

雖然我認爲Tini鏈接的Transurlvania看起來也很酷。 – dokkaebi

2

你爲什麼不寫你ONW微小middleware class您在LocaleMiddleware後補充一點,只需添加語言,如果沒有語言已被確定,但基於您在該線程中解釋的規則。

+0

爲此準備的中間件https://7webpages.com/blog/switch-language-regarding-of-domain-in-django/ –