Gymterview
junior

Что такое локали (locale) в Linux?

Локаль (locale) — набор параметров, определяющих региональные настройки: язык, кодировку, формат даты, чисел, валюты, сортировку строк.

Категории локали

Переменная Описание
LANG Локаль по умолчанию для всех категорий
LC_CTYPE Классификация символов и преобразование регистра
LC_NUMERIC Формат чисел (разделитель дробной части)
LC_TIME Формат даты и времени
LC_COLLATE Правила сортировки строк
LC_MONETARY Формат денежных сумм
LC_MESSAGES Язык системных сообщений
LC_ALL Переопределяет все остальные категории (высший приоритет)

Управление локалями

Пример
locale                              # Текущие настройки
locale -a                           # Установленные локали
sudo locale-gen ru_RU.UTF-8         # Сгенерировать новую локаль
sudo update-locale LANG=en_US.UTF-8 # Установить по умолчанию

Рекомендации для серверов

  • Использовать en_US.UTF-8 — англоязычные сообщения проще для логирования и поиска проблем
  • Всегда UTF-8 — универсальная кодировка, поддерживающая все языки

Для Java-разработчика

  • JVM определяет локаль из системных настроек. Переопределить: -Duser.language=en -Duser.country=US
  • Locale.getDefault() вернёт системную локаль
  • Если на сервере не установлена нужная локаль, Java может некорректно форматировать даты, числа и валюту
  • PostgreSQL зависит от локали: сортировка строк (COLLATE) определяется при создании базы

На собеседовании: достаточно знать, что такое локаль и как она влияет на Java-приложение. Частая ошибка — не понимать, что LANG и LC_ALL — разные переменные (LC_ALL переопределяет все остальные). Проблемы с локалью — частая причина ошибок при деплое приложения на сервер с другими региональными настройками.