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переопределяет все остальные). Проблемы с локалью — частая причина ошибок при деплое приложения на сервер с другими региональными настройками.