diff --git a/chapter09/locale.xml b/chapter09/locale.xml index 25c0b06..add3be0 100644 --- a/chapter09/locale.xml +++ b/chapter09/locale.xml @@ -59,89 +59,80 @@ LC_ALL=<locale name> locale charmap - For the en_GB.iso88591 locale, the above command - will print: + Для локали en_GB.iso88591 приведенная выше команда + напечатает: ISO-8859-1 - This results in a final locale setting of en_GB.ISO-8859-1. - It is important that the locale found using the heuristic above is tested prior - to it being added to the Bash startup files: + Это результат окончательной настройки локали 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 - The above commands should print the language name, the character - encoding used by the locale, the local currency, and the prefix to dial - before the telephone number in order to get into the country. If any of the - commands above fail with a message similar to the one shown below, this means - that your locale was either not installed in Chapter 8 or is not - supported by the default installation of Glibc. + Приведенные выше команды должны вывести название языка, кодировку символов, используемую в локали, + местную валюту и телефонный код страны. Если какая-либо из команд завершается с сообщением об ошибке, похожим + на указанное ниже, это означает, что ваша локаль либо не была установлена в Главе 8, либо не поддерживается + стандартной установкой Glibc. locale: Cannot set LC_* to default locale: No such file or directory - If this happens, you should either install the desired locale using the - localedef command, or consider choosing a different locale. - Further instructions assume that there are no such error messages from - Glibc. + Если это произойдет, вам следует либо установить желаемую локаль с помощью команды + localedef, либо рассмотреть возможность выбора другой локали. Дальнейшие + инструкции не предполагают таких сообщений об ошибках от Glibc. - Some packages beyond LFS may also lack support for your chosen locale. One - example is the X library (part of the X Window System), which outputs the - following error message if the locale does not exactly match one of the character - map names in its internal files: + В некоторых пакетах, выходящих за рамки LFS, также может отсутствовать поддержка выбранного вами + языка. Одним из таких примеров может служить библиотека X (часть системы X Window), которая выводит + следующее сообщение об ошибке, если локаль не соответствует таблице символов во внутренних файлах: Warning: locale not supported by Xlib, locale set to C - In several cases Xlib expects that the character map will be listed in - uppercase notation with canonical dashes. For instance, "ISO-8859-1" rather - than "iso88591". It is also possible to find an appropriate specification by - removing the charmap part of the locale specification. This can be checked - by running the locale charmap command in both locales. - For example, one would have to change "de_DE.ISO-8859-15@euro" to - "de_DE@euro" in order to get this locale recognized by Xlib. + В некоторых случаях Xlib ожидает, что таблица символов будет указана в верхнем регистре с + каноническими тире. Например, "ISO-8859-1", а не "iso88591". Также можно найти подходящий вам вариант, + удалив часть charmap из спецификации локали. Это можно проверить, выполнив команду + locale charmap в обеих локалях. Например, нужно было бы изменить + "de_DE.ISO-8859-15@euro " на "de_DE@euro", чтобы Xlib распознал эту локаль. - Other packages can also function incorrectly (but may not necessarily - display any error messages) if the locale name does not meet their expectations. - In those cases, investigating how other Linux distributions support your locale - might provide some useful information. + Другие пакеты также могут работать некорректно (но не всегда будут отображать какие-либо сообщения + об ошибках), если название локали не соответствует их ожиданиям. В таких случаях изучите, какие ещё + дистрибутивы Linux поддерживают ваш язык, возможно, это даст некоторую полезную информацию - Once the proper locale settings have been determined, create the - /etc/locale.conf file: + Как только будут определены правильные настройки локали, создайте файл + /etc/locale.conf: cat > /etc/locale.conf << "EOF" LANG=<ll>_<CC>.<charmap><@modifiers> EOF - Note that you can modify /etc/locale.conf with the - systemd localectl utility. To use - localectl for the example above, run: + Обратите внимание, что вы можете изменить /etc/locale.conf с помощью + утилиты из состава systemd - localectl. Чтобы использовать + localectl для приведенного выше примера, выполните: localectl set-locale LANG="<ll>_<CC>.<charmap><@modifiers>" - You can also specify other language specific environment variables such - as LANG, LC_CTYPE, LC_NUMERIC or - any other environment variable from locale output. Just - separate them with a space. An example where LANG is set as - en_US.UTF-8 but LC_CTYPE is set as just en_US is: + Вы также можете указать другие переменные окружения для конкретного языка, такие как + 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" - Please note that the localectl command - doesn't work in the chroot environment. It can only - be used after the LFS system is booted with systemd. + Пожалуйста, обратите внимание, что команда localectl + не работает в среде chroot. Его можно использовать только после загрузки системы LFS с помощью systemd. - The C (default) and en_US (the recommended - one for United States English users) locales are different. C - uses the US-ASCII 7-bit character set, and treats bytes with the high bit set - as invalid characters. That's why, e.g., the ls command - substitutes them with question marks in that locale. Also, an attempt to send - mail with such characters from Mutt or Pine results in non-RFC-conforming - messages being sent (the charset in the outgoing mail is indicated as unknown - 8-bit). It's suggested that you use the C locale only - if you are certain that you will never need 8-bit characters. + Локаль C (используемая по умолчанию) и en_US (одна из рекомендуемых для + англоязычных пользователей в Соединенных Штатах) это раные локали. C + использует 7-битный набор символов US-ASCII и обрабатывает байты с установленным старшим битом как + недопустимые символы. Вот почему, например, команда ls заменяет их вопросительными + знаками в этой локали. Кроме того, попытка отправить почту с такими символами из Mutt или Pine приводит + к тому что, отправляемые сообщения не соответствуют RFC (кодировка в исходящей почте указана как unknown + 8-bit). Рекомендуется использовать локаль C, если вы уверены, что вам никогда не + понадобятся 8-битные символы.