Проблемы русификации в Linux.
Начну с того, что ни
одна статья про русификацию не помогла мне с
первого раза. Пришлось прочитать их несколько,
почитать FAQ, HOWTO, MAN. Так, что если вы
наткнулись на статью, в частности на мою, то это
не значит, что ваши проблемы кончились на этом. На
мой взгляд здесь все понятно, и большинству этого
за глаза хватит. Все о чем здесь говорится отлично
работает в RedHat 9.0. Думаю, в других
дистрибутивах работает не хуже. Начнем с
локализации вашего пингвина. Многие программы,
такие как, gnome, kde, OpenOffice.org и
большинство других, с которыми вам придется
столкнуться, поддерживают локализацию. Интерфейс
таких программ будет меняться, в зависимости от
выбора системной локали (например измениться язык
интерфейса). Теперь посмотрим, какая у вас стоит
локаль. Наберите:
# locale
Появится список переменных локали. Похожий на
этот:
LANG=ru_RU.cp1251 LC_CTYPE="ru_RU.cp1251" LC_NUMERIC="ru_RU.cp1251"
LC_TIME="ru_RU.cp1251"
LC_COLLATE="ru_RU.cp1251"
LC_MONETARY="ru_RU.cp1251"
LC_MESSAGES="ru_RU.cp1251" LC_PAPER="ru_RU.cp1251" LC_NAME="ru_RU.cp1251"
LC_ADDRESS="ru_RU.cp1251"
LC_TELEPHONE="ru_RU.cp1251"
LC_MEASUREMENT="ru_RU.cp1251" LC_IDENTIFICATION="ru_RU.cp1251"
LC_ALL= Как известно, в каждом государстве
есть свои национальные стандарты. Кроме языка это
формат бумаги, форма записи даты, времени, адреса
и т.д. За все это и отвечает локаль. В приведенном
выше списке, ru_RU.cp1251, и есть системная
локаль. Здесь она "русская" "для России" и с
кодировкой "cp1251" (интерфейс по возможности на
русском языке, все символы в кодировке cp1251).
Поменять локаль можно так:
# export LANG=ru_RU.koi8r
Посмотреть список доступных в системе локалей:
# locale -a (для удобства используйте locale -a
| grep RU)
Если вам нужна локаль, например, ru_RU.cp1251,
но у вас ее нет в списке, то можно ее добавить:
# localedef -c -i ru_RU -f cp1251 ru_RU.cp1251
Локаль по умолчанию прописывается в файле
/etc/sysconfig/i18n. В строчке LANG - локаль по
умолчанию.
Следующий этап русификация консоли. Того, кто
консоль не любит и использовать ее не хочет, сразу
хочу обрадовать: этот этап можете пропустить, с
русификацией X-ов консоль никак не связанна. Для
русификации будем пользоваться пакетом
kbd. Установка нужного шрифта. По умолчанию
шрифты лежат в каталоге /lib/kbd/consolefonts. Для
русских кодировок рекомендую шрифты Cyr_a.
Расширение.psfu.gz у шрифта означает, что он
годится для разных кодировок. Команда:
# setfont Cyr_a8x16
Установка screen map (aka mapscrn aka
acmtable).
Screen map перекодирует символы из вашей
кодировки в Unicode, лежат в каталоге
/lib/kbd/consoletrans. Выбрать можно так:
# setfont Cyr_a8x16 -m cp1251 Раньше для этого
служила отдельная программа mapscrn. Из пакета ее
не удаляли, поэтому можно пользоваться и ей: #
mapscrn cp1251
Но после mapscrn еще нужно ввести "магическую"
ESC-последовательность:
# echo -ne "\033(K"
Setfont этого не требует.
Выбор раскладки клавиатуры. Раскладки
хранятся в /lib/kbd/keymaps/i386/qwerty. Команда:
# loadkeys ru_win
Теперь посмотрим результаты. Если вы еще не
сделали то, что я показал выше, то сейчас самое
время. Пример опять для cp1251:
#setfont Cyr_a8x16 -m cp1251 #loadkeys
ru_win
Переключение раскладки для ru_win делается
правым Ctrl. Попробуйте печатать русскими буквами.
Если видите караказяблы, то либо вы что-то
неправильно сделали, либо у вас нет нужного
mapscrn или вы выбрали не тот шрифт. Можете у вас
вообще всего этого нет, тогда поищите и скачайте.
Рекомендую пакет kbd-rus. Брать тут
http://baybox.narod.ru/linux/kbd-rus.tgz. Автор
предлагает свои раскладки, mapscrn-ы и шрифты для
кодировок alt(cp866), koi(koi8-r) и win(cp1251).
Кстати раскладку для ru_win, советую все-таки
поменять на раскладку из пакета kbd-rus. Иначе
вместо привычной точки с запятой вы будете
получать слэш и вопрос. Если вы что-то скачали и
положили в нестандартный каталог, то тогда, вам,
конечно, придется полностью прописать путь и имя
файла. Если вы решили русифицировать консоль под
utf-8, тогда вместо sysfont используйте:
# unicode_start ваш шрифт
Естественно, в этом случае не нужно никакого
mapscrn. Какие раскладки клавиатуры
использовать для конкретных кодировок смотри
ниже. Если у вас до сих пор ничего не работает,
тогда я думаю, что и консоль вам не нужна, либо
идите читать другие статьи HOWTOхи и MANы.
Если все работает, тогда доводим до ума.
Редактируем уже знакомый нам файл
/etc/sysconfig/i18n. Первая строчка - локаль.
Выбирайте какая нравится. Как я уже говорил локаль
влияет только на интерфейс, на вводe букв и
просмотре файлов это не скажется. Хотя будет
неприятно видеть сообщения в cp1251, когда у вас
шрифты koi8-r. Поэтому по дефолту выбираем локаль
и шрифты с одной кодировкой. Если вам вообще не
нужен русский интерфейс выберете en_US и никаких
проблем не будет. SYSFONT - дефолтовый шрифт,
ACMTABLE - дефолтовый mapscrn. Строчку SUPPORTED
можно не менять, но если хотите, для порядка,
добавьте туда все используемые вами локали. Теперь
в этом же каталоге ищем файл keyboard. В строчке
KEYTABLE ваша дефолтовая раскладка. Опять же если
вы скачали другие шрифты раскладки и mapscrnы, то
вводите полный путь и имя файла. Если у вас
стандартное тогда используйте следующие комбинации
(для sysfont и loadkeys используйте их же). Вместо
Cyr_a8x16 можно использовать любой кириллический
шрифт, поддерживающий множество кодировок
(расширение.psfu.gz)
Для koi8-r
LANG=ru_RU.koi8r SYSFONT=Cyr_a8x16
ACMTABLE=koi8-r (или koi2alt) KEYTABLE=ru4
(переключение клавишей CapsLock)
Для cp866
LANG=ru_RU.cp866 SYSFONT=Cyr_a8x16
ACMTABLE=cp866 KETABLE=ru2
Для iso8859-5
LANG=ru_RU.iso88595 SYSFONT=Cyr_a8x16
ACMTABLE=8859-5 KETABLE=у себя не нашел,
если вам позарез нужна эта кодировка в консоли, то
найдете.
Для windows(cp1251).
LANG=ru_RU.cp1251
SYSFONT=Cyr_a8x16 ACMTABLE=cp1251 KETABLE=ru_win
Для utf-8
LANG=ru_RU.utf8 SYSFONT=Cyr_a8x16
ACMTABLE можно удалить KEYTABLE=В 9 RedHat
есть только украинская ua-utf, в Cyrillic Edition
добивили ru-utf(.
Теперь при перезагрузке вы увидите сообщения на
русском до тех пор, пока не появится ввод логина и
пароля (если у вас текстовый вход разумеется).
После этого возникает небольшая проблема. Дело в
том, что перед появлением логина и пароля дается
команда reset. От чего очищается экран и
сбрасывается mapscrn. Для восстановления текущего
mapscrn нужно ввести "магическую"
последовательность. Это не очень-то удобно,
поэтому рекомендую в файле /etc/inittab исправить
строки:
1:2345:respawn:/sbin/mingetty tty1 На
1:2345:respawn:/sbin/mingetty --noclear tty1
Для удобства создайте скрипты для включения
каждой кодировки. Например для koi8-r
#/bin/sh setfont Cyr_a8x16 -m
koi8-r loadkeys ru4
Сохраняем в /sbin/koi. Теперь в любое время
вводим команду koi и получаем возможность
просматривать и редактировать текст в этой
кодировке.
Ну и напоследок, расскажу про монтирование
виндузовских разделов.
#mount -t vfat -o iocharset=cp1251,codepage=866
/dev/hda5 /mnt/hda5
Текущие кодировки локали и консоли должны
совпадать с iocharset тогда русские имена файлов
будут отображаться без проблем.
Теперь русификация иксов. Ну здесь, вообще
говоря, особо ничего делать не нужно. Чаще всего
проблемы возникают из-за отсутствия шрифтов с
используемой кодировкой. Выход один - скачайте и
установите русские шрифты для ваших кодировок (я
использую шрифты из Cyrillic Edition
ftp://www.linux-ink.ru/pub/Russian/9/RPMS/ ).
Потом проставьте их в настройках программ. Еще
один совет, опять про ту же клавишу точка с
запятой. Чтобы она у вас работала как в винде, т.е
вводила эти самые точку и запятую, нужно
подредактировать файл /etc/X11/XF86Config. В
секции InputDevice ищем строку
option "XkbLayout" "us,ru"
Заменяем на
option "XkbLayout" "us,ru(winkeys)"
Ну вот, теперь вы знаете и умеете достаточно,
для того чтобы успешно вести войну с
многочисленными русскими кодировками. Можете
изучать эту проблему дальше, создайте свою
кодировку, дайте ей широкое распространение. Тогда
проблема русификации никогда не исчезнет и в
конечном итоге мы все перейдем на латиницу:))
наверх Автор: Scamelscrud Источник: Linux.ru
|