2013-07-31 56 views

回答

28

取代這個圖案註冊:

urlpatterns = i18n_patterns('', 
url(r'^admin/', include(admin.site.urls)), 
url(r'^', include('cms.urls')), 
) 

與此:

from django.conf.urls import patterns 

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^', include('cms.urls')), 
) 

你指着教程使用i18n_patterns方法,它正是這樣做的:預先將語言代碼添加到您的網址。

另外請注意,你可以安全地從你的MIDDLEWARE_CLASSES刪除「django.middleware.locale.LocaleMiddleware」和「cms.middleware.language.LanguageCookieMiddleware」如果你不會使用多種語言。

+0

那麼容易!謝謝! –

+2

這應該是在settings.py :) –

+3

只是一個註釋配置。這也適用於Django CMS v3.0。 – azuax

1

如果你想保持一種語言的網址,例如:因爲你在語言代碼的網站的反向鏈接,你可以簡單地採取了其他語言settings.py

LANGUAGES = (  
    #('en', gettext('en')), 
    ('de', gettext('de')), 
) 

CMS_LANGUAGES = {   
    'default': { 
     'public': True, 
     'hide_untranslated': False, 
     'redirect_on_fallback': True, 
    }, 
    1: [    
     { 
      'public': True, 
      'code': 'de', 
      'hide_untranslated': False, 
      'name': gettext('de'), 
      'redirect_on_fallback': True, 
     }, 
     # { 
     #  'public': True, 
     #  'code': 'en', 
     #  'hide_untranslated': False, 
     #  'name': gettext('en'), 
     #  'fallbacks': ['de'], 
     #  'redirect_on_fallback': True, 
     # }, 
    ], 
} 

這樣該網址仍顯示www.example.com/de/foo.html。在上面的例子中,/de/會丟失,這將使得在網絡無意義的所有URL。

因此,從SEO的角度來看,它可能不是最好的選擇,如果你已經建立了與它的語言代碼的鏈接。

2

@ ppetrid的回答仍然是正確的。不過,截至Django 1.6 patterns已不再可用。現有的代碼改成這樣:

from django.conf.urls import patterns 

urlpatterns = (
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^', include('cms.urls')), 
) 

你也將得到一個警告,如果你的模式離開'',了。

1

在Django版本1.8.18,你只需要把False在這個變量中settings.py

USE_I18N = False 

USE_L10N = False