Локализация Gentoo Linux (UTF-8)

От Perlovka. 2007-07-27 02:24:33
Локализация Gentoo Linux (UTF-8)

Сборка ядра с поддержкой UTF

Для начала нужно собрать ядро с поддержкой UTF и учетом возможности монтировать FAT-разделы и Samba-ресурсы в правильной кодировке:

CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_UTF8=y
CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
CONFIG_FAT_DEFAULT_CODEPAGE=866
CONFIG_SMB_NLS_REMOTE="cp866"
CONFIG_NLS_CODEPAGE_866=y

Создание нужных региональных кодировок

Для начала, необходимо проверить наличие региональной кодировки (необходимо наличие ru_RU.utf8):

# locale -a | grep ru
ru_RU
ru_RU.cp1251
ru_RU.cp866
ru_RU.koi8
ru_RU.koi8r
ru_RU.utf8

Если же у вас нет региональной кодировки ru_RU.utf8, требуется ее создать:

[warn]Требуется glibc версии 2.4-r2 или выше[/warn]

Файл /etc/locale.gen приводим к следующему виду:

en_US ISO-8859-1
en_US.UTF-8 UTF-8
ru_RU.KOI8-R KOI8-R
ru_RU.KOI8-U KOI8-U
ru_RU.UTF-8 UTF-8
ru_RU.CP1251 CP1251
ru_RU.CP866 IBM866

Создаем кодировки командой locale-gen:

# locale-gen
* Generating 7 locales (this might take a while) with 1 jobs
*  (1/7) Generating en_US.ISO-8859-1 ...                                [ ok ]
*  (2/7) Generating en_US.UTF-8 ...                                     [ ok ]
*  (3/7) Generating ru_RU.KOI8-R ...                                    [ ok ]
*  (4/7) Generating ru_RU.KOI8-U ...                                    [ ok ]
*  (5/7) Generating ru_RU.UTF-8 ...                                     [ ok ]
*  (6/7) Generating ru_RU.CP1251 ...                                    [ ok ]
*  (7/7) Generating ru_RU.IBM866 ...                                    [ ok ]
* Generation complete

Локализация консоли

Установка русской locale

В файл /etc/env.d/02locale добавьте или измените строку:

LANG="ru_RU.UTF-8"

Если такого файла не существует - создайте его:

# touch /etc/env.d/02locale

Если вас не устраивают русскоязычные меню и сообщения программ, добавьте также следущую строку:

LC_MESSAGES="POSIX"

Обновите переменные окружения и проверьте результат выполнением следующих команд:

# env-update && source /etc/profile
# locale

Должно получиться нечто вроде этого:

LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC=POSIX
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

В файле /etc/rc.conf установите переменную UNICODE в yes:

UNICODE="yes"

Установка экранного шрифта

Установите пакет terminus-font:

# emerge terminus-font

В файле /etc/conf.d/consolefont установите значение переменной CONSOLEFONT в ter-k14n:

CONSOLEFONT="ter-k14n"

В файле /etc/conf.d/keymaps, установите значение переменной KEYMAP в "-u ru4":

KEYMAP="-u ru4"

В этом же файле переменную DUMPKEYS_CHARSET установите в koi8-r:

DUMPKEYS_CHARSET="koi8-r"

Перезапустите требуемые демоны:

# /etc/init.d/keymaps restart
# /etc/init.d/consolefont restart
[warn]Не выполняйте эту команду в X-терминале, он может неадекватно реагировать! Если вы находитесь в графическом окружении X, нажмите Ctrl+Alt+F1 для перехода в консоль Linux.[/warn]

Теперь вы можете переключать раскладки в консоли клавишей CapsLock

Локализация графического окружения X

Установка шрифтов

По умолчанию в Xorg имеется один набор кириллических шрифтов — Cronyx. Найдите в файле /etc/X11/xorg.conf строки, отвечающие за подключение шрифтов и убедитесь, что в первой строке данной секции указан путь к этому набору:

FontPath   "/usr/share/fonts/cyrillic/"

Настройка клавиатуры

В этом же файле надо изменить настройки клавиатуры, чтобы получить возможность переключать раскладки. Найдите секцию "Input Devices". В ней, после идентификатора клавиатуры (Identifier "Keyboard0"), измените значения переменных:

Option "XkbVariant" ",winkeys"
Option "XkbOptions" "grp:alt_shift_toggle, grp_led:scroll"
Option "XkbRules"   "xorg"
Option "XkbModel"   "pc105"
Option "XkbLayout"  "us,ru"

Доступные значения этих параметров содержатся (вместе с их краткими описаниями) в секции ! option файла /etc/X11/xkb/rules/xorg.lst.

После перезагрузки X сервера вы сможете изменять раскладку клавиатуры с помощью комбинации клавиш Alt+Shift.

Устранение проблем с русскими страницами man

Так как часть страниц man написана на русском языке, причем в кодировке KOI8-R, при системной кодировке UTF-8 возникают проблемы с их отображением. Есть возможность устранить эту проблему с помощью приложения enca, способного "на лету" распознавать кодировку файлов.

Устанавливаем enca

# emerge app-i18n/enca

Исправляем файл /etc/man.conf следующим образом:

...
# NROFF      /usr/bin/nroff -Tascii -c -mandoc
NROFF      /usr/bin/enconv -L ru -x KOI8-R | /usr/bin/nroff -mandoc -Tlatin1 -c | /usr/bin/enconv -L ru -x UTF8
...

Для того, что бы настроить вывод различных сообщений программы man (например, об отсутствии раздела документации) в правильной кодировке, необходимо выполнить следующие действия:

# ebuild /usr/portage/sys-apps/man/man-1.6f-r2.ebuild unpack
# /usr/bin/enconv -L ru -x UTF8  /var/tmp/portage/sys-apps/man-1.6f-r2/work/man-1.6f/msgs/mess.ru
# echo '$ codeset=UTF-8' > /var/tmp/portage/sys-apps/man-1.6f-r2/work/man-1.6f/msgs/mess.ru.codeset
# ebuild /usr/portage/sys-apps/man/man-1.6f-r2.ebuild merge

Для man версий 1.6f и 1.6f-r2 можно взять готовый overlay, выполняющий все вышеуказанные действия, включая правку man.conf

Добавление поддержки UTF в приложения

Настойчиво рекомендуется добавить в файле /etc/make.conf USE-флаг unicode и пересобрать зависимые пакеты:

# emerge -uDN world