On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru


Gambit role play samp samp.world.





 

Русификация KDE

Довольно часто у пользователей возникают трудности с русским языком в оболочке KDE. Как настроить KDE на работу с русским языком, интерфейсом и т.д., я хочу описать в этой заметке.

В Беларуси и России количество людей, знающих английский, невелико. Многие, кто хотел бы использовать свободное программное обеспечение, не могут этого сделать из-за языкового барьера. KDE - это первый Unix-десктоп, который хорошо говорит по-русски. Для полной русификации нужно настроить язык графического интерфейса (меню, заголовки окон и т.д.), ввод по-русски и отображение на экране по-русски. Вам потребуется пакет русской локализации KDE, kde-i18n-ru.tar.bz2, или его готовая версия, собранная поставщиком вашего дистрибутива, если он еще не установлен.
Как настроить отображение графического интерфейса по-русски? Прежде всего, задайте переменную среды LANG, например, прописав в своем домашнем каталоге в файле ~/.profile строчку:
export LANG=ru_RU.KOI8-R
Войдите в систему еще раз, чтобы переменная среды была задана до запуска X-сервера. Эта переменная задает правильную русскую локаль. Далее выберите в Центре Управления KDE в разделе Personalization->Country & Language Россию, русский язык как основной и кодировку koi8-R. Возможно, в некоторых программах или в К-меню появятся знаки вопроса, тогда просто выйдите из KDE и зайдите еще раз.
Зачем нужна правильная локаль? Она нужна как Х-библиотекам, так и библиотекам Qt для правильной перекодировки из кодировки UTF-8 в восьмибитную локаль и обратно. В версии KDE ниже 2.1 и Qt ниже 2.3.0 без задания правильной локали все работало бы неправильно. Теперь же, начиная с Qt 2.3.0, исправлены некоторые ошибки, и вы можете попробовать обойтись без явного задания локали, указав LANG="С". Это имеет как свои плюсы, так и минусы.
Если у вас аллергия на русскоязычный интерфейс и вам нужно только настроить отображение и ввод по-русски, оставьте интерфейс на английском и переходите сразу к настройке шрифтов и Х-сервера.
Как настроить шрифты? Если у вас русский интерфейс, выберите в Центре управления KDE пункт Настройки->Внешний вид и интерфейс->Шрифты и настройте шрифты на свой вкус. Кстати, Qt, начиная с 2.3.0, поддерживает сглаживание (antialiasing) шрифтов.
Шрифты можно настраивать и в отдельных приложениях, и это важно, если у вас вдруг где-то вместо русских символов отображаются знаки вопроса - скорее всего, нужно просто поменять кодировку шрифта на koi8-r.
Также есть возможность запускать отдельные приложения на другом языке. Например, если вы хотите запустить KMail с немецким интерфейсом, в то время как остальные приложения - с русским, добавьте следующие строчки в конфигурационный файл приложения, то есть в ~/.kde/share/config/kmailrc:

[Locale]
Charset=iso8859-1
Country=de
Language=de

При этом, естественно, должен быть установлен пакет немецкой локализации kde-i18n-de.
Как настроить ввод по-русски с русификацией X-сервера? Самое лучшее - настроить клавиатурный модуль Х-сервера xkb. Вот какие настройки можно прописать в файле /etc/X11/XF86Config и/или /etc/X11/XF86Config-4 (для 4.0 и выше): 
Section "InputDevice"
...
Option "XkbRules" "xfree86"
Option "XkbModel" "pc105"
Option "XkbLayout" "ru"
Option "XkbOptions" "grp:toggle,grp_led:scroll"
...
EndSection 

Последняя строчка Option служит для задания переключения раскладки правым Alt и отображения этого лампочкой Scroll Lock. Такой способ настройки имеет то преимущество, что вы сможете вводить по-русски как в KDE, так и в других оконных менеджерах. Для проверки настройки xkb можно запустить xinit и в окне терминала попробовать ввести что-нибудь по-русски.
Как еще можно настроить ввод по-русски? Как уже было сказано, в версии KDE ниже 2.1 и Qt ниже 2.3.0 без задания правильной локали все работало бы неправильно. Минусом предыдущего способа настройки является то, что локаль может быть только одна (или вам нужно изощряться, переключая LANG перед запуском приложения, требующего другой язык). Многим же необходимо работать более чем с двумя языками и раскладками клавиатуры. Начиная с Qt 2.3.0, такая возможность реализована. Вот как это делается, например, для трех раскладок, основной - английской и двух дополнительных, русской и немецкой:
- Выключаем из ХF86Config локальную раскладку:
Option "XkbRules" "xfree86"
Option "XkbModel" "pc105"
# Option "XkbLayout" "de"
# Option "XkbLayout" "ru"
Option "XkbCompat" ""
Option "XkbOptions" "grp:toggle,grp_led:scroll"
- Убираем локаль (export LANG="POSIX"):
$ locale
LANG=POSIX
LC_CTYPE="POSIX"
...
- Запускаем KDE;
- Настраиваем kxkb: в пункте К-меню Настройки->Персональные->Раскладка клавиатуры выбираем три раскладки, первичную en и две вторичные - de и ru.
- После этого все работает!
А именно:
- раскладки переключаются все (xev показывает правильные keysums);
- отображение введенного текста зависит от кодировки шрифта: если вводим по-русски, нужно просто выбрать в приложении шрифт с кодировкой koi-8, если по-немецки, то - iso8859-1.
Самое интересное: задание переменной LANG на ввод таким методом не влияет, а влияет лишь на правильность отображения менюшек и сообщений программ при выборе языка интерфейса, отличного от en. То есть можно ставить LANG=de_DE.ISO8859-1 или LANG=ru_RU.KOI8-R - это ничего не испортит.
Так что можно, например, работать в KMail на любом языке, просто меняя шрифт по мере надобности.
Что делать, если ввод по-русски все-таки не работает? Это может случиться из-за неправильно установленной локали при русификации X-сервера, как описано выше. Бывает, что усилиями поставщиков дистрибутивов ввод не работает, несмотря на вроде бы точное следование вышеприведенным инструкциям. Это означает, что где-то в недрах системных настроек скрыты установленные переменные среды.
Приведу пару примеров того, как это исправить.
- Проверить, правильно ли установлена локаль, можно, вставив команду
export | grep LANG > /tmp/xxx
в скрипт startkde перед запуском kdeinit и посмотрев, что появится в созданном файле /tmp/xxx. Должна быть строка:
declare -x LANG="ru_RU.KOI8-R"
Допустим, результат - этот файл содержит LANG=en_US. (справедливо для Red Hat Linux release 7.0 (Guinness)). Проводим поиск в файлах конфигурации на предмет строки en_US. В файле /etc/.sysconfig/i18n значится строка:
LANG=en_US
Заменяем ее на LANG=ru_ RU.KOI8-R. Все работает.
- Проверить, нет ли чего лишнего, можно командой
export | grep "LC_"
В slackware 7.1 это приводит к отлову следующего жучка:
declare -x LC_ALL="POSIX"
прописанного в /etc/profile. Эту строку надо или закомментарить (рекомендуется), или задать у себя LC_ALL=ru_RU (сами пробуйте), тогда все начинает работать.
Если все вышеописанное не помогло, вот самый плохой, но работающий рецепт, - хаковая русификация с помощью xrusmodmap.
Скачиваем xruskb (ftp://ftp.chg. ru/.1/Linux/sunsite/X11/xutils/xruskb-1.XX.0.tar.gz, где XX-номер последней версии xruskb). Собираем его (ну, это как всегда: configure; make; make install - без хитростей). Ввод работает, если запустить
xrusmodmap /usr/local/share/ xruskb/jcuken-koi8.xmm
НО: если вы дочитали досюда, а значит, вам понадобился последний рецепт, то используйте его лишь как временное решение проблем. Прочитайте документацию более подробно, разберитесь и настройте-таки xkb или kxkb.
Если эти рецепты кому-то не помогают, это само по себе уже интересно. Тогда пишите разработчикам KDE: координатору русской команды перевода KDE. 

При подготовке заметки была использована публичная документация разработчиков KDE.

X-Stranger



Литература по Linux