Проблемы русификации в Linux
Начну с того, что ни одна статья про русификацию не помогла мне с первого раза. Пришлось прочитать их несколько, почитать FAQ, HOWTO, MAN. Так, что если вы наткнулись на статью, в частности на мою, то это не значит, что ваши проблемы кончились на этом. На мой взгляд здесь все понятно, и большинству этого за глаза хватит. Все о чем здесь говорится отлично работает в RedHat 9.0. Думаю, в других дистрибутивах работает не хуже. Начнем с локализации вашего пингвина. Многие программы, такие как, gnome, kde, OpenOffice.org и большинство других, с которыми вам придется столкнуться, поддерживают локализацию. Интерфейс таких программ будет меняться, в зависимости от выбора системной локали (например измениться язык интерфейса). Теперь посмотрим, какая у вас стоит локаль. Наберите: # locale Появится список переменных локали. Похожий на этот: LANG=ru_RU.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. # 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 этого не требует. Выбор раскладки клавиатуры. # loadkeys ru_win Теперь посмотрим результаты. Если вы еще не сделали то, что я показал выше, то сейчас самое время. Пример опять для cp1251: #setfont Cyr_a8x16 -m cp1251 Переключение раскладки для 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. Если все работает, тогда доводим до ума. Редактируем уже знакомый нам файл /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 Для cp866 LANG=ru_RU.cp866 Для iso8859-5 LANG=ru_RU.iso88595 Для windows(cp1251). LANG=ru_RU.cp1251 Для utf-8 LANG=ru_RU.utf8 Теперь при перезагрузке вы увидите сообщения на русском до тех пор, пока не появится ввод логина и пароля (если у вас текстовый вход разумеется). После этого возникает небольшая проблема. Дело в том, что перед появлением логина и пароля дается команда reset. От чего очищается экран и сбрасывается mapscrn. Для восстановления текущего mapscrn нужно ввести "магическую" последовательность. Это не очень-то удобно, поэтому рекомендую в файле /etc/inittab исправить строки: 1:2345:respawn:/sbin/mingetty tty1 Для удобства создайте скрипты для включения каждой кодировки. Например для koi8-r #/bin/sh Сохраняем в /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)" Ну вот, теперь вы знаете и умеете достаточно, для того чтобы успешно вести войну с многочисленными русскими кодировками. Можете изучать эту проблему дальше, создайте свою кодировку, дайте ей широкое распространение. Тогда проблема русификации никогда не исчезнет и в конечном итоге мы все перейдем на латиницу:))
Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=6504 |