Як виправити: Setting locale failed
У різних ситуаціях (наприклад, під час установки додатків 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
Щоб скористатися новими установками з вашими програмами, необхідно пере-логинится (вийти і увійти назад) або перезавантажити систему.
Якщо ця стаття допомогла вам, будь ласка, залиште коментар
Дякую за прочитання!
Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.