thumb

В различных ситуациях (например, во время установки приложений Perl или при использовании apt-get install) я получаю следующее предупреждающее сообщение:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "ru_RU.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

Это предупреждение означает, что вы не настроили правильно локали (языковые стандарты) в вашей системе. Для устранения этой проблемы необходимо выполнить следующие действия.

Проверка локалей

Проверьте, какие языки в настоящее время созданы используя locale -a:

locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
C
C.UTF-8
POSIX
ru_RU.utf8

И/или используя locale:

locale
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

Программы, которые поддерживают технологию локализации используют переменные среды для определения конвенции для применения форматирования даты и времени, отображения символов, местной валюты и кодировки страницы.

Следующие переменные среды влияют на поведение системы связанное с локалью:

  • LANG - Определяет язык по умолчанию в отсутствие других языков связанных с переменными среды.
  • LANGUAGE -
  • LC_ADDRESS - Конвенция используется для форматирования уличных или почтовых адресов.
  • LC_ALL - Высокий приоритет переопределения для конкретных языковых стандартов поведения (переопределяет все другие переменные).
  • LC_COLLATE - Порядок сортировки.
  • LC_CTYPE - Классификация символов и преобразование регистра.
  • LC_MONETARY - Денежное форматирование.
  • LC_MEASUREMENT - Стандартные системы измерения, используемые в регионе.
  • LC_MESSAGES - Формат интерактивных слов и ответов.
  • LC_NUMERIC - Числовое форматирование.
  • LC_PAPER - Стандартный размер страницы для региона.
  • LC_RESPONSE - Определяет ответы (такие как Да и Нет) на местном языке.
  • LC_TELEPHONE - Конвенция используется для представления телефонных номеров.
  • LC_TIME - Форматы даты и времени.

Настройка локалей

Чтобы увидеть, какие языки поддерживаются используйте:

less /usr/share/i18n/SUPPORTED

Вы увидите длинный список названий локалей пригодные для использования в переменных среды. В этом списке найдите нужный вам язык, например «en»:

en_US
en_US.UTF-8

Теперь вам нужно сгенерировать эти локали. Вы можете сделать это с помощью locale-gen:

sudo locale-gen en_US.UTF-8
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

В качестве альтернативы файл локали может быть создан вручную с localedef:

sudo localedef -i en_US -f UTF-8 en_US.UTF-8

Это должно создать локали и затем пере-настроить их.

Выполните команду locale -a для проверки списка доступных локалей (обратите внимание на изменение синтаксиса):

locale -a
C
C.UTF-8
en_US.utf8
POSIX
ru_RU.utf8

Проверьте новые локали:

locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Для использования новых параметров с вашими программами, необходимо пере-логинится (выйти и войти обратно) или перезагрузить систему.

Если эта статья помогла вам, пожалуйста, оставьте комментарий :smiley:

Спасибо за прочтение!