Лого

locale python

Разгоняемся

В 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, '')
    

На этом пожалуй все. Просто помни о таком модуле и может быть он тебе где-нибудь пригодится.