2009-08-04 42 views
9

ファイルロケール/ es/LC_MESSAGES/django.mo(と.po)、makemessagesとcompilemessagesを実行しました。確かに、すべてのメッセージがsettings.pyにDjangoで言語環境を切り替えることができません

を翻訳されています:?

USE_I18N = True 
LANGUAGE_CODE = 'es' 

はまだ、なぜそれが可能...頑固に英語の.poファイルから文字列を取るジャンゴ

ありがとうございます...ありがとうございます。

EDITこれは、LocaleMiddlewareがアクティブな場合にのみ該当します。

答えて

9

Djangoのドキュメントによると

http://docs.djangoproject.com/en/dev/topics/i18n/#id2

LocaleMiddlewareのようなものを使用する必要があります ユーザーの言語設定をで判断しようとしていますこのアルゴリズム以下:

* First, it looks for a django_language key in the current user's session. 

* Failing that, it looks for a cookie. 

[...]

*Failing that, it looks at the Accept-Language HTTP header. This header is sent by your browser and tells the server which language(s) you prefer, in order by priority. Django > tries each language in the header until it finds one with available translations. 

* Failing that, it uses the global LANGUAGE_CODE setting. 

あなたが唯一の言語、 'ES'、あなたはミドルウェアを無効にすることができますが必要な場合。 あなたが本当にLocaleMiddlewareがアクティブな必要がある場合は、クライアントのブラウザhttp://www.djangosnippets.org/snippets/218/からヘッダを上書きするためにこのレシピを試してみてください。もしrequest.META.has_key(「HTTP_ACCEPT_LANGUAGE」) `、Pythonの3.Xを使用してそれらのために

enter code here 

class ForceDefaultLanguageMiddleware(object): 
    """ 
    Ignore Accept-Language HTTP headers 

    This will force the I18N machinery to always choose settings.LANGUAGE_CODE 
    as the default initial language, unless another one is set via sessions or cookies 

    Should be installed *before* any middleware that checks request.META['HTTP_ACCEPT_LANGUAGE'], 
    namely django.middleware.locale.LocaleMiddleware 
    """ 
    def process_request(self, request): 
     if request.META.has_key('HTTP_ACCEPT_LANGUAGE'): 
      del request.META['HTTP_ACCEPT_LANGUAGE'] 
+0

:'ニーズ'HTTP_ACCEPT_LANGUAGE'がrequest.META: 'の場合は'に変更されます。 – reinaldoluckman

0

私は私の設定でこれを使用します。

TIME_ZONE = 'Europe/Paris' 
LANGUAGE_CODE = 'fr-FR' 
SITE_ID = 1 
USE_I18N = True 

だからあなたは 'はES-ES'

関連する問題