2013-07-31 11 views

Odpowiedz

28

zastąpić tę rejestrację wzoru:

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

z tym:

from django.conf.urls import patterns 

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

Tutorial pan wskazał wykorzystuje metodę i18n_patterns który robi dokładnie to: poprzedza kod języka do adresów URL.

Pamiętaj również, że możesz bezpiecznie usunąć "django.middleware.locale.LocaleMiddleware" i "cms.middleware.language.LanguageCookieMiddleware" z MIDDLEWARE_CLASSES, jeśli nie będziesz używać wielu języków.

+0

tak proste! Dzięki! –

+2

To powinno być konfigurowalne w settings.py :) –

+3

Tylko komentarz. Działa to również dla Django CMS v3.0. – azuax

1

Jeśli chcesz zachować jeden język w adresie URL, na przykład dlatego, że masz wstecznych w internecie z kodem językowym, można po prostu wyjąć z drugiego języka w 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, 
     # }, 
    ], 
} 

tamtędy URL nadal pokazuje www.example.com/de/foo.html. W powyższym przykładzie zostanie utracone /de/, co spowoduje, że wszystkie Twoje adresy URL w internecie będą bez znaczenia.

Tak więc, z punktu widzenia SEO, może nie być najlepszą opcją, jeśli masz już utworzone linki z kodem języka w nim.

2

@ Odpowiedź ppetrid jest nadal poprawna. Jednak od Django 1.6 patterns nie jest już dostępny. Zmienić istniejący kod do tego:

from django.conf.urls import patterns 

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

Otrzymasz również ostrzeżenie, jeśli pozostawić '', we wzorach zbyt.

1

w Django wersji 1.8.18 wystarczy umieścić False w tej zmiennej w settings.py

USE_I18N = False 

USE_L10N = False 
Powiązane problemy