如何从django-cms 2.4 URL中删除语言标识符?

时间:2013-07-31 01:04:15

标签: django multilingual django-cms

我已按照tutorial制作了一个新的Django-CMS(2.4)网站。我只使用一种语言(英语)。

有一个自动重定向,在我网站的网址中包含语言标识符'/ en /'。如何删除它?

感谢。

4 个答案:

答案 0 :(得分:30)

替换此模式注册:

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”。

答案 1 :(得分:5)

@ppetrid的回答仍然是正确的。但是,从Django 1.6 patterns开始不再可用。将现有代码更改为:

from django.conf.urls import patterns

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

如果您也将'',留在模式中,也会收到警告。

答案 2 :(得分:3)

在django 1.8.18版中,您只需将False放在settings.py中的此变量

USE_I18N = False

USE_L10N = False

答案 3 :(得分: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/将丢失,这将使网络中的所有网址变得毫无意义。

因此,从SEO的角度来看,如果您已经使用语言代码构建了链接,那么它可能不是最佳选择。