%general-entities; ]> Настройка системной локали /etc/locale.conf В приведенном ниже файле /etc/locale.conf задаются некоторые переменные окружения, необходимые для поддержки вашего языка. Правильная их установка влияет на: Выходные данные программ, переводятся на ваш родной язык Правильную интерпретацию символов в буквы, цифры и другие классы. Это необходимо для того, чтобы bash правильно принимал не-ASCII символы, в командной строке в неанглоязычных языковых системах Правильную для страны сортировку по алфавиту Подходящий формат бумаги по умолчанию Правильное форматирование денежных значений, значений времени и дат Ниже замените <ll> двухбуквенным кодом нужного вам языка (например en), а <CC> двухбуквенным кодом соответствующей страны (например GB). <charmap> нужно заменить на каноническую кодировку для выбраной вами локали. Также могут присутствовать необязательные модификаторы, такие как @euro. Список всех локалей, поддерживаемых Glibc, можно получить, выполнив следующую команду: locale -a Таблицы символов могут иметь несколько синонимов. Например ISO-8859-1 так же называют iso8859-1 и iso88591. Некоторые приложения не могут корректно обрабатывать различные синонимы (например UTF-8 должно быть указано как UTF-8, а не utf8), поэтому в большинстве случаев безопаснее всего выбрать каноническое имя для конкретной локали. Для определения канонического имени локали выполните команду ниже, заменив <locale name> на вывод locale -a для желаемой локали (например en_GB.iso88591). LC_ALL=<locale name> locale charmap Для локали en_GB.iso88591 приведенная выше команда напечатает: ISO-8859-1 Окончательная настройка локали будет выглядеть так: en_GB.ISO-8859-1. Важно, чтобы локаль, найденная с помощью приведенной выше методики, была проверена перед её добавлением в файлы запуска Bash: LC_ALL=<locale name> locale language LC_ALL=<locale name> locale charmap LC_ALL=<locale name> locale int_curr_symbol LC_ALL=<locale name> locale int_prefix Приведенные выше команды должны вывести название языка, кодировку символов, используемую в локали, местную валюту и телефонный код страны. Если какая-либо из команд завершается с сообщением об ошибке, похожим на указанное ниже, это означает, что ваша локаль либо не была установлена в Главе 8, либо не поддерживается стандартной установкой Glibc. locale: Cannot set LC_* to default locale: No such file or directory Если это произойдет, вам следует либо установить желаемую локаль с помощью команды localedef, либо рассмотреть возможность выбора другой локали. Дальнейшие инструкции не предполагают таких сообщений об ошибках от Glibc. В некоторых пакетах, выходящих за рамки LFS, также может отсутствовать поддержка выбранного вами языка. Одним из таких примеров может служить библиотека X (часть системы X Window), которая выводит следующее сообщение об ошибке, если локаль не соответствует таблице символов во внутренних файлах: Warning: locale not supported by Xlib, locale set to C В некоторых случаях Xlib ожидает, что таблица символов будет указана в верхнем регистре с каноническими тире. Например, "ISO-8859-1", а не "iso88591". Также можно найти подходящий вам вариант, удалив часть charmap из спецификации локали. Это можно проверить, выполнив команду locale charmap в обеих локалях. Например, нужно было бы изменить "de_DE.ISO-8859-15@euro " на "de_DE@euro", чтобы Xlib распознал эту локаль. Другие пакеты также могут работать некорректно (но не всегда будут отображать какие-либо сообщения об ошибках), если название локали не соответствует их ожиданиям. В таких случаях изучите, какие ещё дистрибутивы Linux поддерживают ваш язык, возможно, это даст некоторую полезную информацию Как только будут определены правильные настройки локали, создайте файл /etc/locale.conf: cat > /etc/locale.conf << "EOF" LANG=<ll>_<CC>.<charmap><@modifiers> EOF Обратите внимание, что вы можете изменить /etc/locale.conf с помощью утилиты из состава systemd - localectl. Чтобы использовать localectl для приведенного выше примера, выполните: localectl set-locale LANG="<ll>_<CC>.<charmap><@modifiers>" Вы также можете указать другие переменные окружения для конкретного языка, такие как LANG, LC_CTYPE, LC_NUMERIC или любая другая переменная окружения из вывода команды locale. Просто разделите их пробелами. Пример, где LANG установлен как en_US.UTF-8, а LC_CTYPE установлен как en_US: localectl set-locale LANG="en_US.UTF-8" LC_CTYPE="en_US" Пожалуйста, обратите внимание, что команда localectl не работает в среде chroot. Его можно использовать только после загрузки системы LFS с помощью systemd. Локаль C (используемая по умолчанию) и en_US (одна из рекомендуемых для англоязычных пользователей в Соединенных Штатах) это разные локали. C использует 7-битный набор символов US-ASCII и обрабатывает байты с установленным старшим битом как недопустимые символы. Вот почему, например, команда ls заменяет их вопросительными знаками в этой локали. Кроме того, попытка отправить почту с такими символами из Mutt или Pine приводит к тому что, отправляемые сообщения не соответствуют RFC (кодировка в исходящей почте указана как unknown 8-bit). Рекомендуется использовать локаль C, если вы уверены, что вам никогда не понадобятся 8-битные символы.