答案 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的角度来看,如果您已经使用语言代码构建了链接,那么它可能不是最佳选择。