Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum


Lines Club

Ищем достойных соперников.

Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Локализация и русификация Linux

Русификация Linux
(Локализация, шрифты, кодировки)


- the_reaver. Источник - info-reaver.narod.ru. -

Русификация консоли

Для того чтобы русифицировать консоль, необходимо настроить как правильный вывод символов на экран, так и ввод их с клавиатуры. Начнем с вывода символов.

Как Linux осуществляет вывод какой-либо строки на экран? Сначала строка пропускается через так называемую screen map (карту соответствия), перекодирующую выводимые символы в соответствии с используемым терминалом шрифтом. Это позволяет, в принципе, использовать различные кодировки, не изменяя шрифт на консоли.

В Linux и прочих Unix-подобных системах в качестве основной русской кодировки используется кодировка KOI8-R. У этой кодировки есть много преимуществ по сравнению с используемыми в других системах IS08859-5 и кодовыми страницами 1251 и 866, но мы не будем их здесь обсуждать.

Итак, что же нужно сделать, чтобы настроить вывод символов в кодировке KOI8 на экран?

Во-первых, мы должны загрузить русский шрифт. Загрузка шрифта в Linux выполняется при помощи команды setfont. В принципе, в комплект поставки Linux входят KOIS-шрифты, но они весьма плохо выглядят, поэтому мы используем шрифт Суг_а8х16 в кодировке, соответствующей кодовой таблице 866.

В файл /etc/rc.d/rc.font добавьте строку

setfont Суr_а8х16

или, если команда setfont уже присутствует в этом файле, замените указанный после нее шрифт на Суr_а8х16.

Во-вторых, мы должны установить необходимую карту соответствия, которая позволит на лету перекодировать символы из KOI8 в 866 для их корректного вывода на экран при помощи установленного шрифта. Установка карты соответствия выполняется при помощи команды mapscrn.

В файл /etc/rc.d/rc.font добавьте строку

mapscrn koi2ait

Однако того, что мы сделали, еще не достаточно. На каждой консоли, на которой вам нужны русские буквы, карта соответствия должна быть активизирована. Для этого на соответствующую консоль должна быть выведена ?маги-
ческая последовательность? ESC-(K. Для вывода этой последовательности вы можете использовать команду

echo -ne '33(К'

Параметр -п запрещает вывод символа новой строки по окончании работы команды, параметр -е указывает, что вместо выражений вида ххх должен выводиться символ с восьмеричным кодом ххх. В данном случае будет выведен
символ с кодом 033 - то есть, ESC.

Конечно, вы можете каждый раз вводить эту команду вручную на той консоли, на которой вам нужны русские буквы, но этот процесс можно автоматизировать.

В файл /etc/rc.d/rc.local добавьте следующий текст:

for i in 1 2 3 4 5 6

do

echo -ne '33(К' > /dev/tty$i
done

Эта последовательность команд определяет цикл (for ... do ... done), в котором переменная i последовательно принимает значения 1-6 (i in 1 2 3 4 5 6). В теле цикла выполняется вывод нужной "магической последовательности"
ESC-(K на консоль с номером i (/dev/tty$i, знак $ указывает, что вместо $i должно быть подставлено значение переменной, то есть последовательно 1,2, ...,6).

На этом настройка вывода на экран завершена.

Для того чтобы вы могли не только видеть на экране русские буквы, но и иметь возможность вводить их с клавиатуры, необходимо загрузить при помощи команды loadkeys нужную клавиатурную раскладку.

В файл /etc/rc.d/rc.local добавьте команду

loadkeys ru1

Раскладка ru1 позволит вам вводить символы в кодировке KOI8, переключаясь между латинской и русской раскладками при помощи правой клавиши Alt.Теперь вы можете перезагрузить компьютер или просто вручную выполнить описанные команды.

Однако на этом русификация консоли не закончена. Если вы попытаетесь ввести что-либо русскими буквами непосредственно в командной строке, то у вас, скорее всего, ничего не получится. Нам еще предстоит объяснить, как трактовать русские символы трем важным программам : bash, Is и less.

Начнем с bash - интерпретатора командной строки , той программы, которая выводит приглашение $ (или #, если вы работаете от root) и ожидает ввода команд. Для управления поведением bash при использовании символов из второй половины кодовой таблицы используется файл .inputrc, который находится в домашнем каталоге пользователя.

Создайте в своем домашнем каталоге файл .inputrc, сoдержащий следующие строки:

set meta-flag on
set convert-meta off
set output-meta on

Выйдите из системы (введя logout) и войдите в нее снова. Все, теперь вы можете вводить русские буквы в командной строке и даже создавать файлы с русскими именами. Попробуйте ввести :>"Привет, мир", чтобы создать пустой файл с именем Привет, мир.

Но что это? При попытке просмотреть содержимое каталога, в котором создан файл с русским именем, вместо русских букв написаны какие-то числа и вопро сительные знаки? Для того чтобы команда Is корректно отображала русские имена файлов, сделайте следующее.

В конец файла /etc/profile добавьте строку

alias ls='ls -N $LS_OPTIONS'

Вы можете и не делать этого, а просто вызывать Is с ключом -N, если хотите видеть русские имена файлов. Но точно я не гарантирую что это будет работать - при установке своего линукса у меня были проблемы - приходилось использовать другие опции. В общем, если не получится - поэксперементируйте с опциями ls.

Наконец, последняя программа, которую мы хотим образумить, это less - программа постраничного просмотра файлов. Чтобы less корректно выводила русские буквы, необходимо установить переменную окружения LESSCHARSET.

В конец файла /etc/profile впишите строчку

export LESSCHARSET=latin1

На этом русификация консоли закончена. Для того чтобы сделанные нами в файле /etc/profile изменения вступили в силу, вы должны выйти из системы и войти в нее снова.

Русификация Xwindow System

Pусские шрифты KOI8-R на XFree86

В современных дистрибутивах они скорее всего уже стоят. Первым делом (на работающем X сервере) запустите :

$ xlsfonts -fn "*-koi8-r"

Если список не пустой - примите наши поздравления :-)
Начиная с версии XFree86 3.3.2 русские фонты(шрифты) cronyx-* входят прямо в дистрибутив XFree. Если фонтов нет -- их нужно установить. Для Red Hat просто поставьте пакет XFree86-cyrillic-fonts-XXXX.rpm . Фонты установятся в /usr/X11R6/lib/X11/fonts/cyrillic .

Далее нужно подключить шрифты к X Window. Убедитесь, что в файле /etc/X11/XF86Config прописан путь :

Section "Files"
...
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
...
EndSection

Путь с cyrillic лучше всего поставить первым. Перезапустите X сервер и проверьте командой : xlsfonts -fn "*-koi8-r" .

Хорошим решением также будет использование фонт-сервера. Во-первых, он может быть один на всю организацию, а во-вторых, в современных фонт-серверах можно использовать шрифты TrueType. Для Red Hat фонт-сервер xfsft входит в пакет Xfree86-xfs.

Существует два основных способа русификации клавиатуры X :

  • XKB, применяющийся в современном X11R6
  • xmodmap, применявшийся в X11R5

При русификации X 3.3.x через XKB в /etc/X11/XF86Config должно быть прописано:

Section "Keyboard"
...
XkbRules "xfree86"
XkbModel "pc101"
XkbLayout "ru"
XkbOptions "grp:shift_toggle"
EndSection


Для X 4.0.x


Section "InputDevice"
...
Driver "keyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc101"
Option "XkbLayout" "ru"
Option "XkbOptions" "grp:shift_toggle"
EndSection

В зависимости от клавиатуры опция Model может быть "pc101", "pc104" или "pc105", а комбинации переключения:

grp:toggle правый Alt (с "фиксацией")
grp:caps_toggle Caps_Lock
grp:shift_toggle два Shift
grp:ctrl_shift_toggle Control+Shift
grp:ctrl_alt_toggle Control+Alt

Для 4.0.x добавились новые :

grp:alt_shift_toggle Alt+Shift
grp:menu_toggle Menu (модель должна быть pc104, pc105)

В kde, начиная с 2.2.1 можно переключаться с помощью ctrl+alt+K, если включен выбор раскладки в control center на закладке peripherals.

Общие проблемы

Смонтировать диск, чтобы русские имена файлов были видны

Для vfat примерно так (cтрочка из /etc/fstab/):

/dev/hda5 /mnt/d vfat noexec,rw,umask=002, codepage=866, iocharset=koi8-r, gid=100 0 0

(в одну строчку)

Потом mount /mnt/d. Еще в ядро (>=2.0.36) должны быть включены соответствующие кодовые страницы (возможно, в виде модулей /lib/ modules/`uname -r`/fs/nls_*) - CP866 и KOI8-R, так что возможно (хотя скорее всего нет) ядро придется перекомпилировать.

Для CD, содержащего файлы с русскими именами:

$ mount -t iso9660 -o iocharset=koi8-r /dev/cdrom /mnt/cdrom

Параметр codepage для isofs не нужен, в файловой системе JOLIET имена файлов хранятся в UNICODE. Смысл этих опций можно узнать в 'man mount' или в документации исходников ядра /usr/src/linux/Documentation/filesystems/ или /usr/doc/ kernel/filesystems/.

увидеть русские буквы в именах файлов на диске Samba

Добавить в /etc/smb.conf

[global]
character set = koi8-r
client code page = 866
preserve case = yes
short preserve case = yes

перекодировать из DOS/Win кодировки в KOI8-R

Перекодировщиков CP1251 и CP866 --> KOI8-R просто огромное количество. Наиболее широко распространены iconv (входит в поставку glibc(т.е. есть почти на всех дистрибутивах)) и GNU recode ( ftp://prep.ai.mit.edu/pub/gnu/recode/)

$ iconv -f866 -tKOI8-R -o infile
$ recode CP1251..KOI8-R winfile.txt

в mc увидеть pусские буквы

F9 - options - display bits - Full 8 bit

telnet

Если возникают проблемы с вводом русских символов, надо написать файлик ~/.telnetrc со следующей строкой:

DEFAULT set outbinary

Вы можете встретить проблемы при работе в кодировке Win-1251 -- не передается маленькая русская буква "я" 0xff. У протокола TELNET 0xff -- это первый символ управляющей последовательности. Дабы передать собственно "я", нужно его удваивать : 0xff, 0xff. В KOI8-R такой проблемы нет.

русифицировать TeX под koi-8

TeX и LaTeX во всех современных дистрибутивах говорят по-русски с раздачи. В этом случае имеется документ cyrguide.*, который и содержит развернутый ответ на вопрос о русификации TeX.

Переносы не всегда работают "из коробки", иногда надо поправить language.dat, и пересобрать форматы. Вот что пишет Alex Nikiforov:

Если уж о последних версиях, то в RH-6.0 с tetex 0.9 у меня получилось так:

$ texconfig

выбрать

hyphenation -> latex

раскомментировать russian

Добавить в LaTeX файлах

usepackage[T2A]{fontenc}
usepackage[koi8-r]{inputenc}
usepackage[english,russian]{babel}

и в файле можно переключаться между русским и английским командами Russian и Engish. Чтобы добавить форматы из cyrplain набора в texconfig выбрать FORMATS и добавить

cyrtxinf tex language.dat cyrtxinf.ini

для русского texinfo. Аналогично для cyrblue и cyramstx. Чтобы добавить формат cyrtex ( русский TeX ) проще в каталоге web2c выполнить:

initex 'input cyrtex.ini dump'

и бросить символическую ссылку с именем cyrtex на tex ( например в /usr/bin ). Чтобы переключиться на русский в этих plain форматах, нужно использовать команду

language N

где N - номер, под которым числится русский язык в получившейся раскладке.


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют