2017-03-02 15 views
1

settings.pyDjango i18n_patternsのデフォルト言語を設定する方法は?

from django.utils.translation import ugettext_lazy as _ 
LANGUAGE_CODE = 'hi' 
# list of activated languages 
LANGUAGES = (
    ('hi', _('Hindi')), 
    ('en', _('English')), 
) 

urls.py

urlpatterns += i18n_patterns(
    url(r'^', include('howdy.urls')), 
    url(r'^', include('accounts.urls')), 
    url(r'^admin/', admin.site.urls), 
    url(r'^i18n/', include('django.conf.urls.i18n')), 
    url(r'^accounts/', include('allauth.urls')) 
) 

ミドルウェア

MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'debug_toolbar.middleware.DebugToolbarMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
] 

だから私はここで設定したデフォルトは"hi"ですが、私は当たっていたときにそれに言語を追加することなく、URLに「en」をリダイレクトし、「hi」ではなく「url」でリダイレクトするURL [private mode]。私がここで "hi"言語のデフォルトポイントにするために欠けているのは何ですか?

+0

「URL [プライベートモード]」とは何ですか? – Udi

+0

@udi、ブラウザを「シークレットモード」で開いて、サイトが開いていることを確認します。 –

答えて

1

LocaleMiddlewareをお使いですか?参照:How Django discovers language preference

LocaleMiddlewareは、このアルゴリズム以下 により、ユーザーの言語設定を決定しようとします:

  • まず、それは要求されたURLで言語プレフィックスを探します。これは で、 ルートURLconfでi18n_patterns関数を使用している場合にのみ実行されます。詳しくは、国際化:URLパターンの を参照してください。言語の接頭辞とURL パターンを国際化する方法については、こちらをご覧ください。

  • これが失敗すると、現在の ユーザーのセッションでLANGUAGE_SESSION_KEYキーが検索されます。

  • これが失敗すると、Cookieが検索されます。 使用されているCookieの名前は、LANGUAGE_COOKIE_NAME 設定で設定されます。 (デフォルト名はdjango_languageです。)

  • これは失敗し、Accept-Language HTTPヘッダーを調べます。このヘッダー は、ブラウザから送信され、サーバーにどの言語が優先されているかを示します( )。 Djangoは、利用可能な翻訳が見つかるまで、各言語をヘッダ で試します。

  • グローバルLANGUAGE_CODE設定を使用していません。

+0

私はそれを使用しています、私は私の答えを編集しました、見てください –

関連する問題