Разгоняемся
В Python есть встроенный модуль (вот это да!) locale, который позволяет адаптировать приложения под различные региональные настройки пользователей. Это может быть полезным при:
- Форматировании чисел (разделители тысяч, дробные части)
- Форматировании валюты (символы, расположение знака валюты)
- Локализации дат и времени (форматы записи даты и дней недели)
Применение этого модуля помогает сделать твои программы более удобными для пользователей из различных точек нашего шарика.
Основные концепции
Локаль
Локаль - это набор параметров, которые определяют язык, регион и культурные предпочтения. Например:
- Число 1000.50 в США записывается как 1,000.50, а в Германии - 1.000,50
- Форматы даты у нас на родине: 14.03.2020, а в США: 03/14/2020
Категория локали
Python поддерживает несколько категорий локали:
- locale.LC_ALL — применяет настройки ко всем аспектам локали
- locale.LC_NUMERIC — форматирование чисел
- locale.LC_MONETARY — форматирование денежных значений
- locale.LC_TIME — форматирование даты и времени
Установка локали
Для изменения локали нужно использовать вот такую штуку - locale.setlocale():
import locale
locale.setlocale(locale.LC_ALL, 'ru_RU.UTF-8') # Устанавливаем русскую локаль
Ну а чтобы сбросить локаль к заводским настройкам, то делаем вот так:
locale.setlocale(locale.LC_ALL, '')
Форматирование чисел
Можно взять число и форматировать его с учетом локали через вот такой метод - locale.format_string():
locale.setlocale(locale.LC_NUMERIC, 'de_DE.UTF-8')
formatted_number = locale.format_string("%d", 1000000, grouping=True)
print(formatted_number) # покажет тебе: 1.000.000
Форматирование валюты
Наши любимые денежки тоже можно форматировать с помощью locale.currency() чтобы они отображались корректно:
locale.setlocale(locale.LC_MONETARY, 'en_US.UTF-8')
print(locale.currency(1234.56, grouping=True)) # выведет: $1,234.56
Получаем информацию о локали
locale.getlocale() — вернет текущие настройки локали:
print(locale.getlocale()) # ('ru_RU', 'UTF-8')
locale.localeconv() — возвращает словарь с параметрами локали:
print(locale.localeconv())
Давай примеров немного
Отформатируем числа:
locale.setlocale(locale.LC_NUMERIC, 'fr_FR.UTF-8')
print(locale.format_string("%.2f", 1234567.89, grouping=True)) # "1 234 567,89"
А теперь снова поиграем с деньгами:
locale.setlocale(locale.LC_MONETARY, 'de_DE.UTF-8')
print(locale.currency(9876.54)) # "9.876,54 €"
Дата и время - куда же без них:
import time
locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8')
print(time.strftime("%A, %d %B %Y")) # "Пятница, 14 марта 2025"
Заканчиваем
Модуль locale может помочь тебе адаптировать свои творения на Python под разные языковые и региональные стандарты. Он полезен в работе с числами, валютой и датами в разных уголках планеты. Однако важно помнить, что доступность локалей зависит от ОС, поэтому надо проверять поддержку перед установкой. Это можно сделать вот так:
import locale
try:
locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
except locale.Error:
print("Локаль не поддерживается!")
Ну а если надо вернуться к заводским настройкам, то воспользуйся вот таким способом:
locale.setlocale(locale.LC_ALL, '')
На этом пожалуй все. Просто помни о таком модуле и может быть он тебе где-нибудь пригодится.