Сообщить об ошибке.

Функция setlocale() модуля locale в Python

Получить или установить настройки локали

Синтаксис:

import locale

locale.setlocale(category, locale=None)

Параметры:

Возвращаемое значение:

Описание:

Функция setlocale() модуля locale изменяет настройку языкового стандарта для категории category если указан языковой стандарт locale. В случае успеха смены локали возвращается новая настройка локали. Если языковой стандарт locale опущен или отсутствует, возвращается текущий параметр категории category.

Доступные категории category перечислены в разделе "Категории локали модуля locale."

Аргумент locale может быть строкой или кортежем из двух строк ('код языка', 'кодировка'):

  • Если это итеративный код, он преобразуется в имя локали с помощью механизма псевдонимов локалей.
  • Пустая строка locale='' указывает настройки пользователя по умолчанию.
  • Если изменение языкового стандарта завершается неудачей, возникает ошибка Error.

Функция locale.setlocale() не является потокобезопасной на большинстве систем. обычно приложения начинают работу с вызова этой функции для проверки или корректировки региональных настроек.

Функция устанавливает языковой стандарт для всех категорий в соответствии с настройками пользователя по умолчанию и обычно указывается в переменной среды LANG. Если после этого языковой стандарт не изменился, использование многопоточности не должно вызывать проблем.

import locale
locale.setlocale(locale.LC_ALL, '')

Примеры использования:

Посмотрим как зависят региональные настройки от установки локали в Python.

>>> import locale, pprint, time, calendar
# смотрим текущие настройки локали
>>> locale.setlocale(locale.LC_ALL)
# 'LC_CTYPE=ru_RU.UTF-8;LC_NUMERIC=C;
# LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;
# LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;
# LC_ADDRESS=C;LC_TELEPHONE=C;
# LC_MEASUREMENT=C;LC_IDENTIFICATION=C'

>>> time.strftime('%A, %d %B %Y года.')
# 'Monday, 27 April 2020 года.'
>>> list(calendar.day_name)
# ['Monday', 'Tuesday', 'Wednesday', 
# 'Thursday', 'Friday', 'Saturday', 'Sunday']
>>> std = locale.localeconv()
>>> pprint.pprint(std)
# {'currency_symbol': '',
#  'decimal_point': '.',
#  'frac_digits': 127,
#  'grouping': [],
#  'int_curr_symbol': '',
#  'int_frac_digits': 127,
#  'mon_decimal_point': '',
#  'mon_grouping': [],
#  'mon_thousands_sep': '',
#  'n_cs_precedes': 127,
#  'n_sep_by_space': 127,
#  'n_sign_posn': 127,
#  'negative_sign': '',
#  'p_cs_precedes': 127,
#  'p_sep_by_space': 127,
#  'p_sign_posn': 127,
#  'positive_sign': '',
#  'thousands_sep': ''}

Теперь установим локаль функцией locale.setlocale() в LC_ALL как ('ru_RU', 'UTF-8').

>>> import locale, pprint, time, calendar
# устанавливаем локаль
>>> locale.setlocale(locale.LC_ALL, ('ru_RU', 'UTF-8'))
# 'ru_RU.UTF-8'

>>> time.strftime('%A, %d %B %Y года.')
# 'Понедельник, 27 апреля 2020 года.'
>>> list(calendar.day_name)
# ['Понедельник', 'Вторник', 'Среда', 'Четверг', 
# 'Пятница', 'Суббота', 'Воскресенье']
>>> std = locale.localeconv()
>>> pprint.pprint(std)
# {'currency_symbol': '₽',
#  'decimal_point': ',',
#  'frac_digits': 2,
#  'grouping': [3, 3, 0],
#  'int_curr_symbol': 'RUB ',
#  'int_frac_digits': 2,
#  'mon_decimal_point': ',',
#  'mon_grouping': [3, 3, 0],
#  'mon_thousands_sep': '\u202f',
#  'n_cs_precedes': 0,
#  'n_sep_by_space': 1,
#  'n_sign_posn': 1,
#  'negative_sign': '-',
#  'p_cs_precedes': 0,
#  'p_sep_by_space': 1,
#  'p_sign_posn': 1,
#  'positive_sign': '',
#  'thousands_sep': '\u202f'}