Ответ 1
Локализация Django работает в контексте шаблонов и форм Django и не может перемещаться по цепочке к представлениям внутреннего представления в формате Python:
When using Django 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,45
в форму, которая будет интерпретироваться как означающая 10.45
в английской десятичной системе. Аналогично, вывод тега шаблона, такого как {{ value|date:"SHORT_DATE_FORMAT" }}
, будет зависеть от пользовательской локали.
Однако внутренний strftime('%c')
Python не имеет доступа к настройкам 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
.