>··python3.3/_strptime.py", line 337, in _strptime
>····(data_string, format))
>ValueError: time data '2012-13-29' does not match format '%Y-%m-%d'
Имена соответствуют вашей локали — набору настроек операционной системы для интернационализации. Чтобы вывести на экран другие названия месяцев и дней, измените свою локаль с помощью функции setlocale(): ее первый аргумент должен быть равен locale.LC_TIME для даты и времени, а второй аргумент — это строка, содержащая сокращение языка и страны. Пригласим на нашу вечеринку в честь Дня всех святых наших иностранных друзей. Мы выведем на экран дату (месяц, число и день недели) на английском, французском, немецком, испанском и исландском. (А что? Думаете, исландцы не любят вечеринки? У них даже есть настоящие эльфы.)
>>>> import locale
>>>> from datetime import date
>>>> halloween = date(2014, 10, 31)
>>>> for lang_country in ['en_us', 'fr_fr', 'de_de', 'es_es', 'is_is',]:
>…·····locale.setlocale(locale.LC_TIME, lang_country)
>…·····halloween.strftime('%A, %B %d')
>…
>'en_us'
>'Friday, October 31'
>'fr_fr'
>'Vendredi, octobre 31'
>'de_de'
>'Freitag, Oktober 31'
>'es_es'
>'viernes, octubre 31'
>'is_is'
>'föstudagur, október 31'
>>>>
Откуда можно взять эти волшебные значения аргумента lang_country? Это немного ненадежно, но вы можете получить их все сразу (всего их несколько сотен):
>>>> import locale
>>>> names = locale.locale_alias.keys()
Из переменной names получим только те имена локалей, которые будут работать с методом setlocale(), вроде тех, что мы использовали в предыдущем примере, — двухсимвольный код языка (http://bit.ly/iso-639-1), в котором после подчеркивания следует двухсимвольный код страны (http://bit.ly/iso-3166-1):
>>>> good_names = [name for name in names if \
>len(name) == 5 and name[2] == '_']
Как будут выглядеть первые пять из них?
>>>> good_names[:5]
>['sr_cs', 'de_at', 'nl_nl', 'es_ni', 'sp_yu']
Если вы хотите получить все локали для Германии, используйте следующий код:
>>>> de = [name for name in good_names if name.startswith('de')]
>>>> de
>['de_at', 'de_de', 'de_ch', 'de_lu', 'de_be']