2013-07-31 17 views

risposta

28

sostituire questa registrazione modello:

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

con questo:

from django.conf.urls import patterns 

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

Il tutorial si indicò utilizza il metodo i18n_patterns che fa esattamente questo: antepone il codice della lingua per gli URL.

Si noti inoltre che è possibile rimuovere in modo sicuro "django.middleware.locale.LocaleMiddleware" e "cms.middleware.language.LanguageCookieMiddleware" dal MIDDLEWARE_CLASSES se non si utilizzano più lingue.

+0

Così facile! Grazie! –

+2

Che dovrebbe essere configurabile in settings.py :) –

+3

Solo un commento. Funziona anche per Django CMS v3.0. – azuax

1

Se si desidera mantenere una lingua nell'URL, ad esempio perché si ha a ritroso nel web con il codice della lingua, si può semplicemente prendere l'altra lingua in 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, 
     # }, 
    ], 
} 

questo modo l'URL mostra ancora www.example.com/de/foo.html. Nell'esempio sopra, quello /de/ andrà perso, il che renderà privi di significato tutti gli URL nel Web.

Pertanto, da un punto di vista SEO, potrebbe non essere l'opzione migliore se sono già stati creati collegamenti con il codice della lingua.

2

@ la risposta di ppetrid è ancora corretta. Tuttavia, a partire da Django 1.6 patterns non è più disponibile. Modificare il codice esistente a questo:

from django.conf.urls import patterns 

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

si riceverà anche un messaggio di avviso se si lascia la '', nei modelli troppo.

1

In django versione 1.8.18 si solo bisogno di mettere False a questa variabile in settings.py

USE_I18N = False 

USE_L10N = False 
Problemi correlati