Автор статьи: San АНДРЕЕВ Дата: 25.07.2003
1. Что для этого нужно и где это взять.
Я работал с версией 7.2 дистрибутива RedHat. Подобные действия наверняка можно выполнять и в других дистрибутивах (не rpm-based) с поправкой на пути. Необходимо чтобы в системе присутствовали пакеты kbd, console-tools и glibc-common - из них потребуются консольные шрифты, раскладки клавиатуры, кодовые страницы и программы loadkeys, consolechars (или setfont) и localedef. Я также использовал оболочку bash.
2. Теория.
Теорию нижеследующего расписывать не буду, так как я в ней не очень силен. Если кто захочет мне это объяснить или просто добавить к этой статье - добро пожаловать. Частично это описано в статье geekkoo здесь же, в Библиотеке, в разделе "X-сервер" статья "Русский в X-ах". Часть информации оттуда почерпнул и я :), за что автору спасибо.
3. Практика.
Сначала надо "собрать" локаль, потому как в это версии RedHat русской локали в кодировке cp1251 нет. Делается это примерно следующим образом:
# cd /usr/share/i18n
# localedef -f CP1251 -i ru_RU ru_RU.cp1251
По прошествии некоторого времени в каталоге /usr/lib/locale должен появиться каталог с файлами нашей локали - ru_RU.cp1251. Все, локаль есть. Теперь нам нужно загрузить нужные раскладку клавиатуры, шрифт и кодовую страницу. Это можно сделать так:
# loadkeys /lib/kbd/keymaps/i386/qwerty/ru-cp1251.kmap
# consolechars -f /lib/kbd/consolefonts/cyr-sun16
# consolechars -m /lib/kbd/consoletrans/cp1251.acm
Теперь надо скомандовать так называемую "магическую последовательность", которая заставляет ядро переключиться на работу с пользовательской кодовой страницей. Для того, чтобы узнать об этом побольше, обычно отсылают к документации по пакету kbd. Делается это так:
# echo -ne "\033(K"
Ну и напоследок надо немного поколдовать с bash'ем:
# set meta-flag on
# set convert-meta off
# set output-meta on
Теперь надо выбрать нужную локаль:
# export LANG=ru_RU.cp1251
(проверить можно при помощи команды locale) и при нажатии правой клавиши Ctrl должен включаться ввод русского языка в кодировке cp1251.
4. На каждый день.
Чтобы это работало постоянно, необходимо это вставить куда-нибудь, что выполняется при каждой загрузке системы или при каждом логоне. Вариант с загрузочными скриптами у меня почему-то не прошел, поэтому я выбрал второе и прописал команды начиная с loadkeys и заканчивая set output-meta в ~/.bash_profile. Также необходимо поправить файл /etc/sysconfig/i18n для выбора корректной локали для работы:
LANG="ru_RU.cp1251"
SUPPORTED="ru_RU.cp1251:ru_RU:ru"
5. Заключение.
В принципе, описанный метод подходит для настройки работы системы в любой кодировке. Необходимо только наличие соответствующих шрифтов, раскладки, кодовой страницы и локали, либо если нужной локали нет, то "исходников" для ее "сборки".
Ну и по идее это все должно отразиться и на работе в иксах.
6. Замечания.
Для дистрибутива Slackware Linux команду localedef следует дополнить путем для создаваемой локали:
localedef -c -f CP1251 -i ru_RU /usr/lib/locale/ru_RU.cp1251
7. Автор.
San АНДРЕЕВ.
Обоснованные дополнения и исправления вэлкам через почту портала либо через /dev/null.
|