Django のローカリゼーションは、Django のテンプレートとフォームのコンテキストで機能し、Python の内部日時表現までチェーンをたどることはできません。
When using Django's formatting system, dates and numbers on templates
will be displayed using the format specified for the current locale.
...Django will also use localized formats when parsing data in forms.
そのUSE_L10N = True
ため、その地域を持つユーザーがフォームにFR
入力すると、それは英語の 10 進法である10,45
と解釈されます。10.45
同様に、 のようなテンプレート タグの出力は{{ value|date:"SHORT_DATE_FORMAT" }}
、ユーザーのロケールによって異なります。
ただし、Python 内部strftime('%c')
は Django の設定にアクセスせず、代わりに Django がインストールされているマシンに設定されているロケールを参照します。Python が指すロケール設定を取得して変更するには、次のようにします。
>>> datetime.datetime.strptime('2012-05-30 15:30', '%Y-%m-%d %H:%M').strftime('%c')
'Wed May 30 15:30:00 2012'
>>> import locale
>>> locale.getlocale()
(None, None)
>>> locale.getdefaultlocale()
('en_US', 'UTF-8')
>>> locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8")
'fr_FR.UTF-8'
>>> datetime.datetime.strptime('2012-05-30 15:30', '%Y-%m-%d %H:%M').strftime('%c')
'Mer 30 mai 15:30:00 2012'
または、環境変数を設定します$LANG
。