2013-07-31 9 views

Antwort

28

dieses Muster Registrierung ersetzen:

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

mit diesem:

from django.conf.urls import patterns 

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

Das Tutorial Sie die i18n_patterns Methode darauf verwendet, die dies tut genau das: prepends den Sprachcode zu Ihrem urls.

Beachten Sie auch, dass Sie 'django.middleware.locale.LocaleMiddleware' und 'cms.middleware.language.LanguageCookieMiddleware' von MIDDLEWARE_CLASSES sicher entfernen können, wenn Sie nicht mehrere Sprachen verwenden.

+0

So einfach False bei diesen Variablen setzen! Vielen Dank! –

+2

Das sollte in settings.py konfiguriert werden können :) –

+3

Nur ein Kommentar. Dies funktioniert auch für Django CMS v3.0. – azuax

1

Wenn Sie eine Sprache in der URL behalten möchten, zum Beispiel weil Sie Backlinks im Web mit dem Sprachcode haben, können Sie einfach die andere Sprache in settings.py nehmen

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, 
     # }, 
    ], 
} 

Auf diese Weise Die URL zeigt weiterhin www.example.com/de/foo.html an. Im obigen Beispiel wird /de/ verloren gehen, wodurch alle Ihre URLs im Web bedeutungslos werden.

Aus SEO-Sicht ist es vielleicht nicht die beste Option, wenn Sie bereits Links mit dem darin enthaltenen Sprachcode erstellt haben.

2

@ppetrids Antwort ist immer noch korrekt. Ab Django 1.6 ist jedoch keine patterns mehr verfügbar. Ändern Sie den vorhandenen Code dazu:

from django.conf.urls import patterns 

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

Sie werden auch eine Warnung erhalten, wenn Sie die '', in den Mustern zu verlassen.

1

In django Version 1.8.18 Sie müssen nur in settings.py

USE_I18N = False 

USE_L10N = False