17

チュートリアルに従って、新しい Django-CMS (2.4) サイトを作成しました。私は単一の言語 (英語) のみを使用しています。

サイトの URL に言語識別子「/en/」を含めるための自動リダイレクトがあります。どうすれば削除できますか?

ありがとう。

4

4 に答える 4

31

オプション1:

設定ファイルでUSE_I18N = Falseを設定します。

Django の国際化フックはデフォルトでオンになっています... 国際化を使用しない場合は、設定ファイルで USE_I18N = False を 2 秒かけて設定する必要があります。[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まさにこれを行う方法を使用しています。言語コードをURLに追加します。

また、複数の言語を使用しない場合は、MIDDLEWARE_CLASSES から 'django.middleware.locale.LocaleMiddleware' と 'cms.middleware.language.LanguageCookieMiddleware' を安全に削除できることにも注意してください。

于 2013-07-31T01:19:43.613 に答える
2

URL に 1 つの言語を残したい場合 (たとえば、Web に言語コードを含むバックリンクがある場合)、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/は、それが失われ、Web 内のすべての URL が無意味になります。

したがって、SEO の観点からは、言語コードを含むリンクを既に作成している場合、最適なオプションではない可能性があります。

于 2015-05-20T11:59:59.280 に答える