21. Руссификация Java под Linux
Скажу сразу - я с Linux не работаю, а приведённая здесь информация получена от читателей данного описания.
Если Вы найдёте неточность или захотите дополнить - напишите мне.
При кириллизации JVM в Linux существует две параллельных проблемы:
- Проблема вывода кириллицы в GUI-компонентах
- Проблема ввода кириллицы с клавиатуры (в X11)
Проблему
вывода можно решить таким способом (данный алгоритм прислал
Artemy E. Kapitula):
- Установить в X11 нормальные шрифты ttf из Windows NT/2000.
Я бы рекомендовал Arial, Times New Roman, Courier New, Verdana и Tahoma - причем подключать их лучше не через сервер шрифтов, а как каталог с файлами.
- Добавить следующий файл font.properties.ru в каталог $JAVA_HOME/jre/lib
Проблема
ввода решается примерно таким способом (данный алгоритм прислал
Михаил Иванов):
Настройка ввода русских букв приводится для следующей конфигурации:
- Mandrake Linux 7.1
- XFree86 3.3.6
- IBM Java 1.3.0 (релизная)
Проблема:
IBM Java 1.3 не дает вводить русские буквы (видны как крокозябры) при том что на лейблах и в менюхах их видно.
Причина:
использование XIM ( -> xkb) в AWT (это не есть плохо само по себе, просто с такими штуками нужно обращаться осторожно + некоторые прилады xkb не любят).
Решение:
Настроить xkb (и локаль (xkb без локали НЕ РАБОТАЕТ!)).
Процедура:
- выставляется локаль (где-нибудь типа в /etc/profile или в ~/.bash_profile):
export LANG=ru_RU.KOI8-R
export LC_ALL=ru_RU.KOI8-R
- правится (если это еще не сделано) /etc/X11/XF86Config.
В секции Keyboard должно быть примерно следующее:
XkbKeycodes "xfree86"
XkbTypes "default"
XkbCompat "default"
XkbSymbols "ru"
XkbGeometry "pc"
XkbRules "xfree86"
XkbModel "pc101"
XkbLayout "ru"
XkbOptions "grp:shift_toggle" #переключение 2-мя шифтами
#XkbOptions "grp:caps_toggle" #переключение caps-lock'ом
примечание: такая настройка xkb не совместима с xrus (и ему подобными типа kikbd) а посему с ними придется распрощаться.
- перезапускаются X-ы.
Нужно проверить чтобы все работало (типа русские буковки в терминале и приложениях).
- файл font.properties.ru копируется в $JAVA_HOME/jre/lib
- файл fonts.dir копируется в $JAVA_HOME/jre/lib/fonts
- cd $JAVA_HOME/jre/lib/fonts; rm fonts.scale; ln -s fonts.dir fonts.scale
Теперь русские буквы должны вводиться и выводиться в свинге без проблем.
Как Вы можете заметить, в описании приводились ссылки на различные файлы font.properties.ru для Linux.
Отличаются они тем, какие шрифты будут использованы по умолчанию в AWT и Swing.
Соответственно Вам нужно выбрать один и пользоваться им: