Next Previous Contents

3. Русификация

Значительная часть этого раздела написана Alexander Voropay.

3.1 У меня проблемы с русским в...

Проблему русификации можно разделить на несколько частей :

Все эти части настраиваются по-отдельности.

Существует Cyrillc-HOWTO http://www.ibiblio.org/pub/Linux/docs/HOWTO/unmaintained/Cyrillic-HOWTO, однако он довольно долго не обновлялся и больше не поддерживается, поэтому отнеситесь к нему критически (Last version : v4.0, 23 January 1998), перевод: http://www.inp.nsk.su/~baldin/Cyrillic-HOWTO-russian-old/Cyrillic-HOWTO.html.

Евгений Балдин создал новую версию Cyrillic-HOWTO на русском (версия не имеет английского перевода и не включена в официальную базу HOWTO). Доступна здесь : http://www.inp.nsk.su/~baldin

Лучше всего сперва искать решение проблемы здесь и лишь потом - в Cyrillic-HOWTO (англоязычном).

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

В системе Linux существуют два конкурирующих пакета управления шрифтами и клавиатурой : kbd и consoletools.

ftp://ftp.win.tue.nl/pub/linux/utils/kbd/ или ftp://ftp.kernel.org/pub/linux/utils/kbd/

http://lct.sourceforge.net

В разных дистрибутивах применяются или один, или другой. Например, в Red Hat 4.х и 5.x для русификации консоли применялся пакет kbd. Однако в Red Hat 6.x и выше применяется уже другой пакет - consoletools.

Существует Keyboard-and-Console-HOWTO, автор этого HOWTO является также автором пакета kbd, поэтому естественно, всех склоняет к использованию kbd. ;-) http://linuxdoc.org/HOWTO/Keyboard-and-Console-HOWTO.html

На "низком уровне" для русификации консоли достаточно выполнить следующие команды (пакет kbd):

$ setfont Cyr_a8x16
$ mapscrn koi2alt
$ echo -ne "\033(K"
$ loadkeys ru1
Если используется пакет console-tools:
$ consolechars -f UniCyr_8x16 -m koi8-r
$ echo -ne "\033(K"
$ loadkeys ru1
См. man на соответствующие команды и 'man console_codes'. Описание, что есть что, у console-tools в /usr/doc/console-tools*, довольно внятное.

NB! К сожалению, в пакете console-tools некоторые русские фонты не содержат UNICODE screen-font map (SFM) и в таком виде попадают во многие дистрибутивы. Исправленные фонты живут в пакете console-tools-cyrillic: ftp://ftp.ice.ru/pub/fonts/linux/

Как правило, настройка шрифтов и клавиатуры скрыта среди стартовых скриптов, а ключевые управляющие параметры вынесены в отдельные файлики. Иногда существуют даже специальные программы настройки. "Идеологически правильно" не нарушать системную архитектуру дистрибутива, а всего лишь поменять настройки в этих файликах.

К сожалению, в Linux только один загружаемый фонт на все виртуальные консоли.

Если вы хотите видеть русские буквы и рамки (например в mc) на консоли одновременно, используйте только TERM=linux .

У вас будут проблемы при работе консоли в CP-866 из-за того, что некоторые русские буквы в этой кодировке совпадают со "старшими" управляющими кодами C1, например буква "Ы" 0x9B совпадает со старшим ESC (CSI). Работайте в KOI8-R.

3.3 Мне говорят "Настрой локаль!" Что это значит ?

Речь идет о настройке системной locale. Проверить установки можно, просто сказав locale:

$ locale
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_ALL=
$
Если результат именно такой, значит настроена русская locale (ru_RU) в кодировке KOI8-R. Проверить можно командами 'cal' или 'date' - даты должны быть на русском.

На самом деле, для настройки locale достаточно всего лишь установить переменную окружения LANG= из стартовых скриптов (например /etc/profile) или руками.

  
$ export LANG=ru_RU.KOI8-R
В Red Hat-based дистрибутивах это делается путем редактирования файла /etc/sysconfig/i18n где, кроме прочего, должна быть строчка
LANG=ru_RU.KOI8-R

3.4 * Как настроить locale ? Я установил LANG, но русских дат нет.

Прежде всего - подробная дока о locale имеется на http://www.sensi.org/~alec/locale. Обращайтесь туда, если вам нужны нестандартные варианты (например, отключение русскоязычного интерфейса с сохранением правильной сортировки и т.д.)

Система X-Window и библиотеки Xlib и Xt имеют собственные механизмы локализации (XLC_LOCALE) которые являются "надстройкой" над системной locale. Подробности: {X11Root}/doc/i18n (в RedHat: /usr/share/Xfree86-doc/i18n). Документация в .PS http://www.tsu.ru/~pascal/x_locale/.

Хотя в принципе допустимо задавать короткое именование, вроде LANG=ru_RU или даже LANG=ru, лучше использовать _полное_ имя : LANG=ru_RU.KOI8-R . Совершенно недопустимо задавать LANG=ru_SU, такой страны больше нет :-)

К сожалению, не все дистрибутивы "от рождения" позволяют использовать ru_RU.KOI8-R . Воспользуйтесь 'locale -a' для получения списка допустимых значений. Если в списке нет значения ru_RU.KOI8-R, его нужно добавить, а то LANG= будет указывать "в пустоту" :

$ localedef -c -i ru_RU -f KOI8-R ru_RU.KOI8-R
Computing table size for character classes might take a while... done
Computing table size for collation information might take a while... done
$
$ cd /usr/lib/locale
$ mv ru_RU.koi8r ru_RU.KOI8-R
(в старых версиях - /usr/share/locale)

NB! Утилита localedef фомирует "сжатое" (mangled) имя кодировки, так что имя превращается в "ru_RU.koi8r". Это приводит в замешательство некоторые программы. Но к счастью, все же можно установить полное имя LANG="ru_RU.KOI8-R" и благодаря mangling-у все будет работать и программы будут счастливы. Еще один вариант -- переименовать каталог.

Некоторые дистрибутивы неправильно включают

LANG=ru
LC_ALL=ru_RU.KOI8-R
Это НЕПРАВИЛЬНО. Лучше не устанавливать переменную окружения LC_ALL вообще (достаточно полного LANG=, а все переменные LC_xxxx "унаследуются" от него). Подробнее смотрите на http://www.sensi.org/~alec/locale/ в главе "Как включить..."

3.5 Как отключить вывод сообщений на русском, сохранив при этом остальные свойства русской локали ?

Нужно определить переменные окружения :

LANGUAGE=en_US
LC_MESSAGES=en_US
В RedHat эти строки можно вписать прямо в /etc/sysconfig/i18n .

3.6 Я настроил locale и русский в консоли, но bash все равно не вводит русские буквы, пищит.

Хотя для большинства программ вполне достаточно установки LANG=ru_RU.KOI8-R чтобы начать распознавать русские буквы, многие программы, основанные на библиотеке readline (например bash), все равно считают символы с кодами больше 128 особыми META-символами (пищит при вводе).

Чтобы отучить библиотеку readline от этого, необходимо определить переменную

INPUTRC=/etc/inputrc
Кроме того, создать файл /etc/inputrc
set meta-flag on
set convert-meta off
set output-meta on
После этого библиотека readline (и bash) начнет воспринимать русские буквы.

Еще один вариант : Не задавать INPUTRC=, а прописать те же значения в файл ~/.inputrc (в home-каталоге). Но тогда придется заводить такой файл в домашнем каталоге каждого пользователя.

См. man readline.

3.7 Red Hat и русификация

Cоздаем файлик /etc/sysconfig/i18n. Внутри должно быть что-то вроде:

SYSFONT=UniCyr_8x16
SYSFONTACM=koi8-r
LANG=ru_RU.KOI8-R
Раскладка клавиатуры выбирается утилитой kbdconfig и прописывается в файл /etc/sysconfig/keyboard, в виде:
KEYTABLE=ru1
Эти файлы используются в скриптах /etc/rc.d/rc.sysinit, /sbin/setsysfont. Ознакомьтесь с ними, а также с /usr/doc/initscripts-x.xx/, если возникли вопросы или проблемы.

3.8 Debian и русификация

Debian 2.2: Насторойка фонтов запускается из /etc/init.d/console-screen.sh

/etc/console-tools/config:

#
SCREEN_FONT=Cyr_a8x16
APP_CHARSET_MAP=koi8-r
#
APP_CHARSET_MAP_vc2=koi8-r
APP_CHARSET_MAP_vc3=koi8-r
APP_CHARSET_MAP_vc4=koi8-r
APP_CHARSET_MAP_vc5=koi8-r
APP_CHARSET_MAP_vc6=koi8-r
Фонты нужно заменить, взяв правильные из console-tools-cyrillic.

Клавиатура настраивается из /etc/init.d/keymaps-lct.sh и загружает раскладку /etc/console-tools/default.kmap.gz Именно под этим именем нужно разместить требуемую раскладку или создать symlink. Для интерактивного выбора клавиатуры есть полезная утилита: kbdconfig.

/etc/environment:

LANG=ru_RU.KOI8-R

3.9 Как установить русские фонты 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 также имеется отдельный ответ, в разделе про X Window.

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

http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/

3.10 Как сделать так, чтобы в X Window русские буквы вводились везде ?

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

При русификации 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)
Если есть проблемы с XKB, прочтите http://www.tsu.ru/~pascal/other/xkb/ Там же есть ссылки на "переключатели клавиатуры", например xxkb, описание, как использовать несколько раскладок одновременно, назначать клавиши переключения раскладок и много других интересных вещей.

Наиболее развитая программа для переключения клавиатуры через способ xmodmap : xruskb от Alexander V. Lukaynov

ftp://ftp.yars.free.net/pub/software/unix/X11/ (primary site)

ftp://ftp.relcom.ru/pub/x11/cyrillic/

Она может понадобиться для русификации X11R5 терминалов, например железных, или эмуляторов под MS Windows. Для ее применения с XFree86 лучше отключить модуль XKB в /etc/X11/XF86Config директивой XkbDisable. Правильная раскладка для xruskb: jcukeng-cyr.xmm

Проверить русификацию X можно программой xev: клавиатура должна генерировать правильные XkeySym для кириллицы (0x6xx), а xev должна показывать Cyrillic_IE и пр. при нажатии русских букв, а не OCyrcumflex e.t.c.

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

Для 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/

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

Для сервера добавить в /etc/smb.conf

 
[global] 
character set = koi8-r 
client code page = 866
preserve case = yes 
short preserve case = yes
default case = lower
mangle case = no
Чтобы правильно монтировались smb разделы надо при компиляции ядра указать (ядро должно быть >=2.2.20 )
CONFIG_NLS_DEFAULT="koi8-r"
CONFIG_SMB_NLS_DEFAULT=y
CONFIG_SMB_NLS_REMOTE="cp866"
CONFIG_SMB_NLS=y
CONFIG_NLS=y

3.13 Как перекодировать из 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<outfile> infile
$ recode CP1251..KOI8-R  winfile.txt
Еще один URL для recode - http://www.iro.umontreal.ca/~pinard/recode/.

Перекодировщик русского текста с автоматическим определением исходной кодировки: ftp://oskin.macomnet.ru/pub/linux/misc/xcode.c

В конце концов сгодится обычный lynx :

$ lynx -assume_local_charset cp866  file.txt

3.14 * Как с помощью Vim редактировать файлы в различных кодировках?

:e ++enc=cp1251 winfile.txt
Загрузить файл, считая, что он в указанной кодировке, и перекодировать его в кодировку, в которой работает редактор.

3.15 * Как создавать и редактировать файлы в UTF-8 в редакторе VIM ?

VIM должен быть версии 6.x и собран с поддержкой Multibyte:

configure --with-features=huge  --enable-multibyte
Предположим, консоль русифицирована в KOI8-R, тогда в VIM надо дать команды :
:set encoding=utf-8
:set fileencoding=utf-8
:set termencoding=koi8-r
В RedHat VIM разнесен на несколько пакетов.
vim-common-6.1-2
vim-minimal-6.1-2
vim-enhanced-6.1-2
Редактор vi, входящий в vim-minimal собран без Multibyte, vim из vim-enhanced -- с поддержкой. Надо пользоваться редактором vim.

3.16 Можно ли научить Vim понимать хоткеи, когда включена русская раскладка клавиатуры?

В  /.vimrc:

set langmap=йq,цw,уe,кr,еt,нy,гu,шi,щo и т.д.

3.17 Как прикрутить к Golded/LNX почтовую базу в 866 кодировке ?

Во-первых, нужно взять GoldEd+ c http://golded-plus.sourceforge.net.

Кроме того, нужно взять таблицы перекодировки (например из пакета русификации, проходившего по файлэхе aftnged и лежащего на http://collage.etel.ru/fileechos/ftn/ и прописать их в golded.cfg, примерно так:

AREAPATH /mnt/c/fido/fecho/
AREAFILE FastEcho

XLATPATH /home/ak/.golded/chars
XLATLOCALSET KOI8
XLATIMPORT IBMPC
XLATEXPORT IBMPC
XLATCHARSET KOI8 IBMPC koi_866.chs
XLATCHARSET IBMPC KOI8 866_koi.chs
IGNORECHARSET

3.18 Можно ли в mc увидеть pусские буквы?

Можно. F9 - options - display bits - Full 8 bit

В последних версиях 'mc' появилась поддержка различных Charset-ов . Эта опция должна быть включена при компиляции 'mc' .

$ ./configure  --enable-charset  ....

3.19 less

Yuriy.Kaminskiy@p21.f517.n5020.z2.fidonet.org пишет:

при настроенной локали указывать LESSCHARSET _HЕ HАДО_. Более того, в ~/.lesskey надо добавить

#env
LESSCHARSET=
чтобы он игнорировал установку LESSCHARSET= глупыми программами (к примеру, man :) [после этого надо запустить lesskey для получения бинарного файла ~/.less] В противном случае он не будет вызывать setlocale(LC_CTYPE,"") и, как следствие, не будет icase search для русских букв.

3.20 telnet

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

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

3.21 Что делать, если "слетела" консоль ?

Скорее всего на консоль был скопирован какой-то двоичный файл, где случайно встретилась переключающая ESC-последовательность. Тогда :

Сброс терминала :

$ echo -ne "\033c"
набрать вслепую, или с работающей консоли :
# echo -ne "\033c" >/dev/ttyX
Переключение на downloaded font
 
$ echo -ne "\033(K"
(возможно, еще придется перегрузить фонты, но это смотря как консоль сорвало...)

Если вывалилась какая-то программа, которая использует curses, то проще

$ stty sane
В Red Hat все это делают reset; setsysfont <ctrl-j>

reset - из ncurses

См. 'man console_codes' и 'man stty'

3.22 Как русифицировать TeX под koi8-r?

Все вопросы по TeX рекомендуется задавать в ru.tex. FAQ из этой конференции и прочая информация по TeX в России находятся по адресу http://myke.webjump.com/tex/.

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 - номер, под которым числится русский язык в получившейся раскладке.

В принципе можно заменить в конфигурации ruhypen на ruenhyp и оставить только совместные русско-английские правила переноса, но детально это не проверял и подробно описать не могу.

3.23 * Где взять русские Type1 ps фонты в KOI8-R?

Современные Type1 фонты в общем не обязаны иметь информацию о "кодировке", а должны просто содержать русские символы с именами глифов типа "afii10049" (Association for Font Information Interchange). О "векторе кодировки" должно заботиться приложение, порождающее ps. См. документы Adobe:

Free фонты Type1 c русскими символами: Также см. Cyrillic-HOWTO п."Кириллические шрифты" http://www.inp.nsk.su/~baldin/Cyrillic-HOWTO-russian/Cyrillic-HOWTO-russian.html

К сожалению, некоторые приложения видят только первые 256 символов Type1 шрифта (Latin1 или ISO_8859-1). Именно для таких приложений нужны "отхаканные" шрифты, где вместо "circumflex" и "cedilla" расположены символы KOI8-R. Взять можно например с: ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts/ Прочитайте README.

3.24 Где найти хорошие русские шрифты для X Window System?

Кроме распространенных шрифтов Cronyx существуют гораздо более эргономичные шрифты из проекта Cyr-RFX Дмитрия Болховитянова: http://www.inp.nsk.su/~bolkhov/files/fonts/cyr-rfx/

Фонт -cronyx-fixed-* с полным соответствием koi8-r , в том числе с рамками: ftp://ftp.ice.ru/pub/fonts/X11

Русские фонты из KSI-Linux: ftp://ftp.ksi-linux.com/pub/patches/

Русские фонты из Black Cat Linux: ftp://ftp.blackcatlinux.com/pub/blackcat-linux/6.2/SRPMS/SRPMS/urw-fonts-2.0-4bc.src.rpm

3.25 Emacs/XEmacs

Берем iso8859-5 шрифты с http://www.inp.nsk.su/~bolkhov/files/fonts/cyr_rfx/. Подключаем их к иксам, и выбираем в меню Mule нужную кодировку.

Очень благородные изовые шрифты можно взять на любом зеркале GNU в каталоге intlfonts. конкретно, например, ftp://ftp.chg.ru/pub/gnu/intlfonts/intlfonts-1.2-split/European.tar.gz (131Кб). В Debian они уже есть.

Подробная инструкция по русификации XEmacs имеется по адресу http://www.linux.zp.ua/xemacs/.

3.26 Как pусифициpовать dosemu ?

Клавиатуpа - любым досовым pусификатоpом. Кроме того, есть патчик в http://www.ice.ru/~vitus/misc/, который позволяет обойтись без русификатора клавиатуры. В X-ах - рекомендуется, так как позволяет избежать двух клавиш переключения - одной в DOS другой - на остальном десктопе. При работе с удаленным dosemu (по telnet/ssh/rsh) - необходим.

Фонты - в консольном dosemu тем же pусификатоpом, в X-овом - поставить фонт с 866-ой кодиpовкой. Взять можно по адpесам http://www.ice.ru/~vitus/works/x11.html, ftp://ftp.dosemu.org/dosemu/Development/vga_cyr8x16.pcf.gz или http://www.inp.nsk.su/~bolkhov/files/fonts/vga4dosemu/.

3.27 А как русифицировать StarOffice (там же - а почему он у меня не ставится и т.п.

Почитайте замечательную страничку Леона Кантера по адресу - http://www.blackcatlinux.com/StarOffice/

Составаитель FAQ был бы рад узнать, в какой мере сведения на этой странице применимы к Open Office и Star Office 6.

3.28 Как русифицировать AbiWord?

Обратитесь по адресу http://www.hippo.ru/~hvv/abiword/

3.29 Как сделать русскоязычный интерфейс в Mozilla?

http://www.mozilla.ru/download/

Вот более общая и более удобная в плане установки из самой мозиллы ссылка: http://www.mozilla.org/projects/l10n/mlp_status.html

3.30 Как русифицировать Netscape {4|3}/научить его понимать win-кодировку ?

3.31 Как мне заставить приложение для иксов использовать шрифты с koi8-r, а не iso8859-1 ?

a) Постарайтесь выяснить, откуда приложение берет имя фонта. Чаще всего приложение хранит имена используемых фонтов в "базе ресурсов": в персональной  /.Xdefaults или системной /usr/X11R6/lib/X11/app-defaults/ базе. Имена используемых фонтов хранится в форме XLFD, т.е. там можно применять "*". Например:

Netscape*fontList: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-koi8-r
Посмотреть "ресурсы" приложения можно утилитой appres :
$ appres  XTerm
В man практически на любую X программу имеется секция RESOURCES.

Если программа написана с применением какого-либо "Toolkit"-а : GTK, Qt, Motif, e.t.c., чаще всего достаточно русифицировать Toolkit. Русификация GNOME/Gtk и Qt таким способом описана чуть ниже.

b) С помощью ключа -fn font или -font font. Этот ключ обрабатывается в XLIB и он скорее всего будет работать в любой X программе.

c) Метод грубого хака. Нужно взять русские шрифты с ftp://ftp.relcom.ru/pub/x11/cyrillic/fonts/, там есть шрифты adobe-*-koi8-1 (c fonts.alias, делающим из них -iso8859-1), но реально содержащие кириллицу в koi8-r в старшей половине.

При этом шрифты с теми же именами и "настоящими" символами iso8859-1 становятся недоступны. Стандартных шрифтов из XFree86-cyrillic-fonts недостаточно. Кроме того, пути к русским шрифтам в конфиге иксов или фонт-сервера должны быть впереди всех прочих.

Однако лучше не использовать этот метод, а написать автору программы (или прислать ему patch ;) для вынесения имени фонта в "ресурс".

3.32 Почему в Gnome или программах, использующих GTK+, кое-где русский текст выводится латиницей? Где прописываются используемые ими шрифты?

Если gtk не находит нужных шрифтов (в частности, нужного размера), он режет 8-й бит. Шрифты задаются в /etc/gtk/gtkrc.$LANG. Поэтому нужно создать файл gtkrc.ru или поправить существующий. Внутри должно быть примерно следующее (названия шрифтов, размеры и прочие атрибуты можно исправить по вкусу, но эти шрифты должны содержать кириллицу в koi8-r):

style "gtk-default-ru" {
       fontset = "-cronyx-helvetica-medium-r-normal--*-*-*-*-*-*-koi8-r,\
                  -cronyx-courier-medium-r-normal--*-*-*-*-*-*-koi8-r,\
                  -cronyx-fixed-medium-r-normal--*-*-*-*-*-*-koi8-r,\
                  -cronyx-times-medium-r-normal--*-*-*-*-*-*-koi8-r"
}
class "GtkWidget" style "gtk-default-ru"
И скопировать этот файл в 'gtkrc.ru_RU.KOI8-R' или сделать symlink:
 
$ cd /etc/gtk/ 
$ ln -s  gtkrc.ru  gtkrc.ru_RU.KOI8-R 
Подробности см. http://www.gtk.org/tutorial/gtk_tut-21.html, а также http://www.linux.org.ru/gnome/

3.33 Qt и русскоязычные программы

http://kde.ru/docs.php?action=index

3.34 Как русифицировать KDE?

http://www.kde.org/international/russia/localization.html

3.35 Что сделать, чтобы было можно работать в юникодной локали (ru_RU.UTF-8) в консоли и в иксах?

К сожалению, "железо" консоли IBM-PC (VGA/SVGA) может отображать только 256 символов одновременно. Еще 32 символа отъедают рамки. Если пожертвовать атрибутами, количество символов можно довести до 512. Для UNICODE явно маловато. См. Console programming HOWTO http://devel.linvision.com/doc/fbh/current/index.html

Если устраивают эти ограничения, то переход (пакет console-tools) в/из однобайтового режима консоли в режим UTF-8 осуществляется командами unicode_start(1) и unicode_stop(1) . Узнать текущий режим можно командой vt-is-UTF8(1) . Документация - в console-tools/lct.txt

Эмулятор терминала XTerm в X Window не имеет аппаратных ограничений. Запуск

: xterm -u8
с фонтами *-iso10646-1 .

Наиболее современные программы не используют "терминальный ввод-вывод" вообще, а написаны с использованием ToolKit-ов, поддерживающих UNICODE (Qt, GTK, Java .e.t.c.) или напрямую пользуются возможностями GUI X Window.

Для правильной работы приложений в UTF-8 необходимо, чтобы системная локаль также была UTF-8, например LANG="ru_RU.UTF-8" .

Дополнительная информация:

UTF-8 and UNICODE FAQ: http://www.cl.cam.ac.uk/~mgk25/unicode.html

The Unicode HOWTO: http://www.tldp.org/HOWTO/Unicode-HOWTO.html

How do Unix terminals work?: http://czyborra.com/unicode/terminals.html

Unicode Howto for KDE developers: http://developer.kde.org/documentation/library/kdeqt/kde3arch/KDE-Unicode-Howto.html

Есть микро-HOWTO вот здесь: http://lists.debian.org/debian-russian/2001/debian-russian-200111/msg00203.html

3.36 Кто занимается переводом документации и пользовательских интерфейсов на русский язык?

Russian Linux Documentation Project: http://rldp.linux.ru.net. Ведет Alexsandr Mikhailov, mailto:alexmikh@mail.ru Информация: http://www.tldp.org/vlist.html#te

Русская команда перевода GNU: http://www.gnu.org.ru, http://www-ru.gnu.org.ru/, http://www2.iro.umontreal.ca/~pinard/po/registry.cgi?team=ru

Проект Алексея Махоткина "Manpages-Ru" посвящен переводу пакета manpages на русский язык. http://www.alexm.here.ru/manpages-ru

KDE: http://www.kde.org/international/russia/

GNOME: http://www.linux.org.ru/gnome/


Next Previous Contents
Используются технологии uCoz