17

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

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

谢谢。

4

4 回答 4

31

选项1:

在设置文件中设置USE_I18N = False

Django 的国际化钩子默认是打开的……如果你不使用国际化,你应该花两秒钟在你的设置文件中设置 USE_I18N = False。[Django 文档:翻译]

国际化是从 Django “继承”的。Django-cms 2.4 使用支持国际化和使用 USE_I18N 标志的 Django 1.5。该标志已在所有后续 django 版本中使用。

选项 2:

替换此模式注册:

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

于 2013-07-31T01:19:43.613 回答
5

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

from django.conf.urls import patterns

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

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

于 2017-09-07T03:02:58.390 回答
4

在 django 版本 1.8.18 中,您只需将False这个变量放在 settings.py

USE_I18N = False

USE_L10N = False
于 2017-09-15T02:49:54.557 回答
2

如果您想在 URL 中保留一种语言,例如因为您在网络中有带有语言代码的反向链接,您可以简单地在 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,
        # },
    ],
}

这样 URL 仍然显示www.example.com/de/foo.html。在上面的示例中,这/de/将丢失,这将使您在网络上的所有 URL 变得毫无意义。

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

于 2015-05-20T11:59:59.280 回答