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

Щоб скористатися новими установками з вашими програмами, необхідно пере-логинится (вийти і увійти назад) або перезавантажити систему.