import locale # удалено в Python 3.13 locale.getdefaultlocale([envvars])
envvars
- необязательный список переменных среды окружения.('lang_code', 'encoding')
.Удалено в версии Python 3.13. Вместо этого нужно использовать функции
locale.setlocale()
,locale.getpreferredencoding(False)
иlocale.getlocale()
.
Функция getdefaultlocale()
модуля locale
пытается определить настройки локали по умолчанию и возвращает их в виде кортежа формы ('lang_code', 'encoding')
.
Согласно POSIX, программа, которая не вызывает перед началом работы функцию locale.setlocale(LC_ALL, '')
, запускается с использованием переносимой локали 'C'
. Вызов locale.setlocale(LC_ALL, '')
позволяет использовать локаль по умолчанию, определенную переменной LANG
.
Для обеспечения совместимости с другими платформами опрашиваются не только переменная LANG
, но и список переменных, заданных в качестве параметра envvars
. Будет найден первый найденный для определения. По умолчанию envvars
- путь поиска, используемый в gettext
GNU; Значение envvars
всегда должно содержать имя переменной "LANG". Путь поиска в GNU gettext
содержит LC_ALL
, LC_CTYPE
, LANG
и LANGUAGE
в указанном порядке.
>>> import locale >>> locale.getdefaultlocale(['LC_CTYPE', 'LANG']) # ('ru_RU', 'UTF-8')
>>> import locale >>> import os >>> for env_name in ['LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE']: ... env_set = os.environ.get(env_name, '') ... print(f'{env_name} = {env_set}') ... # LC_ALL = # LC_CTYPE = # LANG = ru_RU.UTF-8 # LANGUAGE = >>> def_loc = locale.getdefaultlocale() >>> locale.setlocale(locale.LC_ALL, def_loc) # 'ru_RU.UTF-8' >>> settings = locale.localeconv() >>> settings['currency_symbol'] '₽' >>> settings['int_curr_symbol'] 'RUB '