Руководство по русской локализации Gentoo Linux
Автор: Алексей Федорчук
Версия: 1.0.0, 18.02.2003
Содержание:
1. Введение1.1. Что такое русская локализация
1.2. О кириллических кодировках
2. Базовая кириллизация консоли
2.1. Введение
2.2. Установка экранного шрифта
2.3. Установка раскладки клавиатуры
2.4. Установка карты соответствия (mapscreen)
2.5. Активизация карты соответствия
3. Установка русской locale
3.1. Установка locale ru_RU.KOI8-R
4. Установка часового пояса
4.1. Системные часы по Гринвичу
4.2. Системные часы по местному времени
5. Локализация оконной системы X
5.1. Введение
5.2. Локализация с использованием утилиты xf86config
5.3. Установка кириллических шрифтов
5.4. Ручная настройка клавиатуры для ввода кириллицы
1. Введение
1.1. Что такое русская локализация
В понятие локализации входит обеспечение вывода и ввода символов национальных языков (в случае использования набора UTF-8символов, отличных от чистого латинского) и определение переменных окружения, зависящих от страны, языка и набора символов (то есть собственно установка locale). В число таких переменных, кроме страны, языка и набора символов, входят также представление даты и времени, разделителей десятичных дробей, денежных единиц и так далее.
Вследствие различия подходов в этом документе будут отдельно рассмотрены локализация текстового (то есть Linux-консоли) и графического (оконной системы X) режимов.
1.2. О кириллических кодировках
В условиях России и некоторых других стран бывшего СССР локализация осложняется множественностью наборов символов (charsets), используемых для представления алфавитов, основанных на кириллице. Причём для Unix-систем получили распространение минимум три таких набора, в просторечии именуемых кодировками: традиционная для свободных Unix-клонов (в том числе и Linux) кодировка KOI8-R
, кодировка ISO-8859-5
(именуемая кодировкой ГОСТ), используемая в проприетарных Unix-системах, и кодировка CP1251
(или кодировка Windows). Кроме того, для обеспечения экранного вывода используется кодировка CP866
(или кодировка DOS). Наконец, в последнее время всё большую популярность получает кодировка UTF-8
.
В Gentoo Linux штатно (как говорится, из коробки) поддерживается кодировка KOI8-R
, и всё сказанное ниже относится именно к ней. Локализацию для кодировок ISO-8859-5
или CP1251
пользователь может выполнить самостоятельно, получив из независимых источников некоторые дополнительные компоненты. О локализации для кодировки UTF-8
, призванной унифицировать подход к интернационализации, будет говориться в следующих версиях этого документа, когда использование её станет общепринятым.
2. Базовая кириллизация консоли
2.1. Введение
Итак, базовая локализация консоли включает обеспечение вывода национальных символов на экран и ввода их с клавиатуры. Однако в случае кириллической локализации вследствие особенностей наборов символов и аппаратных особенностей PC для ввода и для вывода используются, как правило, разные кодировки. И это требует еще двух дополнительных шагов - установки карты соответствия между наборами символов ввода и вывода, и активизация её на каждой из виртуальных консолей.
2.2. Установка экранного шрифта
Экранный шрифт, загружаемый по умолчанию при старте системы, определяется в файле /etc/rc.conf
строкой
CONSOLEFONT="default8x16"
Для вывода русских букв "умолчальное" значение следует заменить на имя какого-либо файла шрифта с поддержкой кириллицы, например, cp866-8x16 для представления кодировки DOS или koi8r-8x16 - для кодировки KOI8-R. Например, для кодировки cp866
CONSOLEFONT="cp866-8x16"
Или для кодировки KOI8-R
CONSOLEFONT="koi8r-8x16"
Примечание: Файлы шрифтов (и не только кириллических) находятся в каталоге /usr/share/consolefonts/
и имеют вид *.gz
, *.psf.gz
или *.psfu.gz
. При стандартном их размещении и форме ни полного пути, ни "расширения" имени указывать не обязательно.
Важно: В кириллическом Linux'е для экранного вывода, как правило, используется кодировка cp866 (вне зависимости от того, какой набор символов принят для клавиатурного ввода). О причинах этого говорить можно было бы долго - достаточно указать, что в любом ином случае программы, использующие псевдографику (например, Midnight Commander) приобретут весьма уродливый вид.
Экранные кириллические шрифты, поставляемые с Gentoo Linux, далеки от эстетического совершенства (справедливости ради заметим, что это относится почти ко всем Unix-клонам). И потому в качестве источника дополнительных шрифтов можно рекомендовать пакет console-tools-cyrillic Виктора Вагнера. В результате приведенная выше в качестве примера строка может принять вид вроде
2.3. Установка раскладки клавиатуры
Загружаемая по умолчанию раскладка клавиатуры также определяется в файле /etc/rc.conf строкойKEYMAP="us"
По аналогии с предыдущим случаем легко догадаться, что значение us следует заменить на имя файла какой-либо кириллической (на этот раз уже в кодировке KOI8-R
) раскладки. Место этих файлов (имеющих вид *.map.gz
) - в каталоге /usr/share/keymaps/i386/qwerty
, где для русской кодировки KOI8-R
имеется несколько раскладок, например, ru1-ru4
. Различия между ними - в соответствии различной маркировке клавиш (DOS или Windows - не путать с одноименными кодировками) и положении переключателя латиница/кириллица. Рискну взять на себя смелость рекомендовать раскладку ru4
- для Windows-маркированных клавиатур, в которой переключателем служит CapsLock (при этом фиксация верхнего регистра обеспечивается одновременным нажатием клавиш Shift+CapsLock). То есть строка примет вид:
KEYMAP="ru4"
Примечание: Как и в случае с экранными шрифтами, при стандартном расположении файлов раскладок указывать полный путь к ним и "расширение" имени нет необходимости.
Внимание: При желании вы можете выбрать и раскладку клавиатуры для кодировки cp1251
(например, ru_win
). Однако в этом случае придётся отыскать или самостоятельно изготовить таблицу перекодировки (mapscreen) cp1251->cp866.
Примечание: Нет ничего более уродливого, чем программы, использующие псевдографику, при экранном представлении в кодировке cp1251
.
2.4. Установка карты соответствия (mapscreen)
Теперь остаётся только обеспечить соответствие между кодировками ввода (KOI8-R
) и вывода (cp866
), то есть загрузить соответствующую таблицу перекодировки (mapscreen). Для этого снова обращаемся к файлу /etc/rc.conf
. Строка в нём, отвечающая за эту операцию, имеет по умолчанию такой вид:
#CONSOLETRANSLATION="cp437_to_iso01"
Необходимо, сняв с неё символ комментария (#
), заменить "умолчальное" значение на необходимое нам, и подсмотреть его можно в каталоге /usr/share/consoletrans
- это koi2alt
. Установка таблицы соответствия cp866->KOI8-R
CONSOLETRANSLATION="koi2alt"
Внимание: Пожалуйста, не забудьте снять символ комментария со строки CONSOLETRANSLATION
- кто только на моей памяти не наступал на эти грабли :-)
Примечание: Если вы по каким-либо причинам остановились на представлении экранных шрифтов в кодировке KOI8-R, загрузка и активизация карты соответствия, разумеется, не нужна.
2.5. Активизация карты соответствия
Результатом выполненной операции будет то, что после перезагрузки машины мы получили бы нормальный вывод кириллического текста (записанного в кодировке KOI8-R
), но только - на первой (т.н. системной) консоли. Чтобы иметь то же самое на остальных виртуальных консолях (а в Gentoo Linux их по умолчанию еще 5), та же карта соответствия должна быть активизирована на каждой из них с помощью направления Escape-последовательности \033(K
(символ \
в данном случае показывает, что следующие за ним символы рассматриваются как специальные). Достигнуть этого можно разными способами. Например, создать в каталоге /etc/init.d/
файл consoletrans и в любом текстовом редакторе внести в него следующие строки:
for i in 1 2 3 4 5 6; do echo -ne '\033(K' > /dev/vc/$i done
Примечание: Это - для случая 6-ти консолей по умолчанию. Если количество их изменялось пользователем, значения in
, очевидно, должны быть приведены в соответствие с реальностью.
Примечание: Следует отметить, что начиная с baselayout-1.8.x
необходимость в этом отпала, поскольку этот код был встроен в /etc/init.d/consolefont
.
Теперь командой chmod a+x /etc/init.d/consoletrans
созданному скрипту следует присвоить бит исполнения, после чего он добавляется к уровню исполнения по умолчанию (default runlevel):
# rc-update add consoletrans default
Примечание: Механизм автоматического обновления стартовых скриптов подробно описан в соответствующем разделе документации (доступен и русский перевод).
Вот теперь после перезагрузки машины мы получим полноценно локализованную консоль.
Примечание: Все действия, описанные в данной главе, могут быть выполнены как на заключительных шагах (final steps) установки Gentoo Linux, так и в произвольный момент времени в дальнейшем.
3. Установка русской locale
3.1. Установка locale ru_RU.KOI8-R
Установить локально-зависимые переменные можно различными способами, в том числе и просто в профильных файлах отдельных пользователей. Однако в Gentoo Linux предусмотрен автоматический механизм установки любых переменных окружения в качестве общесистемных - env-update
, подробно описанный в соответствующих разделах документации, в том числе и русском переводе её.
Для использования этого механизма следует в файл /etc/env.d/00basic
добавить строку
LANG="ru_RU.KOI8-R"
которая определяет не только язык locale
, но и все остальные локально-зависимые переменные. Далее выполняем команду env-update
, дополняющую глобальный профильный файл /etc/profile
, после чего остаётся только перечитать последний командой source /etc/profile
. Теперь в ответ на команду 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_PAPER="ru_RU.KOI8-R" LC_NAME="ru_RU.KOI8-R" LC_ADDRESS="ru_RU.KOI8-R" LC_TELEPHONE="ru_RU.KOI8-R" LC_MEASUREMENT="ru_RU.KOI8-R" LC_IDENTIFICATION="ru_RU.KOI8-R" LC_ALL=
свидетельствующий, что все локально зависимые переменные приняли значения для страны России (ru
), русского языка (_RU
) и набора символов KOI8-R
. Те же значения этих переменных будут устанавливаться и в сеансах всех пользователей, вошедших в систему после выполнения команды env-update
.
Внимание: Механизм env-update
однозначно работает в том случае, если пользовательской оболочкой (login shell) является /bin/bash
. При использовании иных командных оболочек могут потребоваться некоторые дополнительные действия. Например, если в качестве login shell выступает оболочка zsh
, следует отказаться от создания файла ~/.zshenv
в домашнем каталоге пользователя.
Важно: Переменная LANG=ru_RU.KOI8-R
должна быть установлена в любом случае, даже если вы не любите сообщений на русском языке: в противном случае во многих программах (в том числе для XFree86) окажется просто невозможным, например, ввод символов кириллицы.
Как уже сказано, установка переменной LANG
автоматически определяет и все прочие локально-зависимые переменные. Что в ряде случаев может быть нежелательным. Например, некоторые программы расчетного характера требуют, чтобы в качестве десятичного разделителя использовался символ точки, как в locale POSIX
, а не запятой, как это принято в locale ru_*
. Чтобы добиться этого, достаточно в конец файла /etc/env.d/00basic
, после определения LANG
, добавить строку вида:
LC_NUMERIC="POSIX"
Аналогичным образом могут поступить пользователи, испытывающие стойкую неприязнь к русскоязычным меню и сообщениям программ:
LC_MESSAGES="POSIX"
4. Установка часового пояса
4.1. Системные часы по Гринвичу
Если системные часы машины в BIOS Setup установлены на время по Гринвичу (UTC), для настройки часового пояса достаточно создать символическую ссылку /etc/localtime на файл, описывающий данный часовой пояс. Например, для установки московского времени это будет выглядеть так:
ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Примечание: Точное обозначение часовых поясов для России можно посмотреть в каталогах /usr/share/zoneinfo/Europe (имеет силу также для Украины и Белоруссии) и /usr/share/zoneinfo/Asia
(для азиатской части России). Например, пользователям из Петропавловска-Камчатского указанная команда потребуется в следующем виде:
ln -sf /usr/share/zoneinfo/Asia/Kamchatka /etc/localtime
4.2. Системные часы по местному времени
Если системные часы данной машины установлены по местному времени, кроме создания указанной ссылки потребуется внести еще и изменения в файл /etc/rc.conf
, а именно: строку CLOCK="UTC"
заменить на CLOCK="local"
.
5. Локализация оконной системы X
5.1. Введение
Локализация оконной системы X (конкретно - её свободной реализации XFree86) может быть выполнена двумя путями: с помощью специальных утилит конфигурирования (обычно - xf86config
, используемой для настройки графического режима вообще) или прямым редактированием конфигурационного файла /etc/X11/XF86Config
.
5.2. Локализация с использованием утилиты xf86config
Утилита xf86config
в большинстве случаев позволяет корректно выполнить кириллизацию системы XFree86 уже на стадии начальной её настройки. Для этого необходимо дать (в консольном режиме) одноименную команду и правильно ответить на вопросы, относящиеся к определению языково-зависимых параметров, и следующие после указания выбора типа клавиатуры.
Первый из таких вопросов - выбор страны (Enter a number to choose the country
), ответ на который, на самом деле, определяет базовую раскладку клавиатуры. Очевидными ответами являются 8 Belarusian
для Белоруссии и 70 Ukrainian
для Украины, тогда как для России предлагается два варианта: 53 Russian
и 54 Russian (cyrillic phonetic)
. Первый - это традиционная раскладка qwerty, второй же - фонетическая раскладка ywerti, в которой символы кириллицы расположены на месте созвучных латинских. Она использовалась на старых терминалах и ныне практически не встречается. Так что на самом деле и тут выбор 53 Russian
практически однозначен.
Далее следует предложение указать вариант русской раскладки (Please enter a variant name for 'ru' layout
). Если, просто нажав Enter, отказаться от этого, будет установлен так называемый DOS-вариант раскладки (вернее, маркировки клавиш); маркированные таким образом клавиатуры практически вышли из употребления, поэтому следует, введя winkeys
, выбрать Windows-вариант (не следует путать его с Windows-кодировкой, иначе говоря - cp1251).
Затем, введя y, следует положительно ответить на вопрос об указании дополнительных опций расширения XKB (Do you want to select additional XKB options (group switcher, group indicator, etc.)?)
: это позволит определить переключатель латиница/кириллица (в силу исторических причин русская раскладка клавиатуры в XFree86 по умолчанию такового не имеет вообще).
В результате следующим шагом будет предложение выбрать клавишу или клавишную комбинацию для такого переключателя. Возможные варианты включают:
1 R-Alt switches group while pressed 2 Left Win-key switches group while pressed 3 Right Win-key switches group while pressed 4 Both Win-keys switch group while pressed 5 Right Alt key changes group 6 Caps Lock key changes group 7 Menu key changes group 8 Left Win-key changes group 9 Right Win-key changes group 10 Both Shift keys together change group 11 Control+Shift changes group 12 Alt+Control changes group 13 Alt+Shift changes group
Из них следует выбирать, руководствуясь своими предпочтениями. Однако по вполне понятным причинам можно рекомендовать, чтобы переключатель раскладок был идентичен для текстового (консольного) и графического режимов. ИМХО, лучше всего на эту роль подходит клавиша CapsLock (для этого в консоли должна быть установлена раскладка ru4
). При этом первичная функция этой клавиши (фиксация верхнего регистра), как и в консоли, будет выполняться одновременным нажатием Shift+CapsLock
Примечание: Не менее удобным представляется и использование в качестве переключателя какой-либо из т.н. Windows-клавиш, имеющихся на всех современных клавиатурах. Однако при этом для достижения идентичности переключения в консоли и в XFree86 потребуются расширенные раскладки клавиатуры из упомянутого выше пакета console-tools-cyrillic
.
Следующие несколько вопросов позволяют указать переключатель для третьей клавиатурной раскладки, дополнительные позиции управляющей клавиши Control, индикацию текущей раскладки (например, индикаторами CapsLock или ScrollLock) и ещё некоторые опции. Если в них нет необходимости - ответы на эти вопросы можно просто пропустить, нажимая клавишу Enter.
Покончив с настройкой клавиатуры, следует завершить конфигурирование XFree86 (включая настройку видеорежимов) и выйти из программы xf86config
с сохранением результатов в файле /etc/X11/XF86Config
.
5.3. Установка кириллических шрифтов
Программа xf86config
обеспечивает настройку клавиатурного ввода, но не подключает по умолчанию шрифтов с символами кириллицы - это достигается редактированием файла /etc/X11/XF86Config
. Его следует открыть в любом текстовом редакторе и отыскать в Section "Files"
описание путей к шрифтовым файлам.
Внимание: При вызове файла /etc/X11/XF86Config
необходимо отключить режим переноса строк в используемом редакторе.
Пути к файлам шрифтов описываются следующим образом:
FontPath "/usr/X11R6/lib/X11/fonts/local/" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
В этот список следует внести путь к файлам шрифтов с поддержкой кириллицы. По умолчанию в любой современной версии XFree86 имеется один набор кириллических шрифтов - Cronyx, расположенный в каталоге /usr/X11R6/lib/X11/fonts/cyrillic/
. И потому первая строка указанной секции должна принять вид
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"
Важно: Строка с кириллическими шрифтами должна быть первой в списке путей, дабы именно они обнаруживались бы любыми программами в первую очередь при совпадении их имен или псевдонимов с таковыми шрифтов, не имеющих символов кириллицы.
Примечание: Шрифты производства Cronyx содержат ограниченное число гарнитур. Кроме того, они являются растровыми и вообще далеки от эстетического совершенства. Поэтому их по возможности лучше дополнить (или заменить) шрифтами от независимых производителей. В качестве таковых можно рекомендовать коллекцию масштабируемых (TTF и ATM) лицензионно чистых шрифтов Валентина Филиппова, входящих в российскую сборку OpenOffice и в последние версии дистрибутивов Altlinux.
5.4. Ручная настройка клавиатуры для ввода кириллицы
К кириллизации XFree86 посредством программы xf86config
целесообразно прибегать только при начальной настройке этой системы. Если же в ходе использования Gentoo Linux возникнет необходимость дополнительного конфигурирования (например, изменения положения переключателя раскладок), проще обратиться к прямому редактированию файла /etc/X11/XF86Config
.
За настройку клавиатуры в нём отвечает Section "InputDevice"
. В ней, после указания идентификатора клавиатуры (а оконная система X в состоянии поддерживать, даже на локальной машине, более одной физической клавиатуры) и её драйвера, следует описание т.н. правил (rules), определяющих раскладку клавиатуры. Оно имеет вид вроде следующего:
Option "XkbRules" "xfree86" Option "XkbModel" "pc105" Option "XkbLayout" "ru" Option "XkbVariant" "winkeys" Option "XkbOptions" "grp:caps_toggle,grp_led:caps"
Здесь, разумеется, можно изменить всё, что угодно. Однако практически имеет смысл рассмотреть только возможные варианты значений для строки Option "XkbOptions"
. Значение, приведенное в примере, соответствует переключателю раскладок CapsLock (grp:caps_toggle
) и индикатору Capslock как показателю включения русской раскладки (grp_led:caps
). И то, и другое можно изменить, если не устраивает. Доступные значения содержатся (вместе с их краткими описаниями) в секции option
файла /usr/X11R6/lib/X11/xkb/rules/xfree86.lst
.
Примечание: Описание раскладок клавиатуры через набор правил - лишь одно из возможных. О других способах сделать это можно прочитать на http://www.tsu.ru/~pascal/other/xkb.
- Для комментирования войдите или зарегистрируйтесь
CapsLock
Есть такая проблемка: при установке ru4 для русской раскладки не работает CapsLock, т.е. Shift-CapsLock. Вернее, лампочка загорается, но буквы всё равно маленькие. Подскажите, плз, ктон-ть, как от этого избавиться?
console-tools-cyrillic Виктора Вагнера
/etc/init.d/consolefont restart&&/etc/init.d/keymaps restart
Внести изменения
После выполнения emerge system при компиляции gentoo после всех вышеперечисленных манипуляций в файл /etc/make.conf добавить строчку:
LINGUAS=ru
После этого все устанавливаемые пакеты будут по возможности ставить русский интерфейс
к примеру
kde-i18n
k3b
xmms
и т.д.
сам енто случайно обнаружил, когда пытался поставить kde-i18n
без дополнительного флага он ни в какую не хотел ставиться через портежи.
или у меня Лиса глючит... или над статьей жестоко прикололись...
А у меня вроде все нормально, как именно прикололись?
Сейчас все нормально, а до этого тэги были прямо в тексте
Аналогично.... под лисой, оперой и эксплохером.
При установки Gentoo 2005.0 из ebuild'ов ставится xorg-6.8.2, который
русифицируется стандартным набором в файле
/etc/X11/xorg.conf
Однако в моем случае этого оказалось недостаточно. Пришлось внести некоторые дополнения, а именно, в файле
/usr/X11R6/lib/X11/xkb/rules/xorg
раскоментировать строчку, начинающуюся с
У меня так работает:
_________________
Blame!
#кодировка
Java GUI + KOI8-R
Если после всех вышеописанных теледвижений у вас в Java приложениях вместо кириллических символов лезет арабская вязь, создайте пустой файл /usr/X11R6/lib/X11/locale/koi8-r/Compose