Ваш язык установлен в вашем скрипте? Если вы позвоните locale.getlocale()
, ожидается ли результат? Сравните ниже:
>>> import locale
>>> locale.getlocale()
(None, None)
>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2010, 8, 9)
>>> today.strftime('%x')
'08/09/10'
>>> locale.setlocale(locale.LC_ALL, "de_DE.UTF-8")
'de_DE.UTF-8'
>>> locale.getlocale()
('de_DE', 'UTF8')
>>> today.strftime('%x')
'09.08.2010'
Обратите внимание, что в модуле datetime
есть ошибки, в основном из-за ошибок в базовых C-библиотеках. Например, в моей установке (последняя версия OS X) строка форматирования %z
полностью недоступна.
В Windows синтаксис строк локали, доступных для setlocale()
, соответствует синтаксису, отличному от * nix-платформ. Список здесь на MSDN .
И если вы просто хотите установить в своем скрипте ту локаль по умолчанию, которую установили ваши пользователи (на моем: английский английский), вы просто делаете это в начале основного скрипта. Не делайте этого в модулях, так как это переопределяет глобальную переменную:
>>> locale.setlocale(locale.LC_ALL, "")
'en_GB.UTF-8'