Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.


При поддержке
Продвижение сайта
Создание сайта
Администрирование сервера
настройка сервера
Администрирование сервера
настройка сервера
Администрирование сервера
аренда сервера


Как научить KDE говорить по-русски?

Перевод : Денисом Першиным

<>1. Что такое русификация KDE?

В России количество людей, знающих английский, невелико. Многие, кто хотел бы использовать свободное программное обеспечение, не могут этого сделать из-за языкового барьера. KDE - это первый Unix-десктоп, который хорошо говорит по-русски. Для полной русификации нужно настроить язык графического интерфейса (меню, заголовки окон и т.д.), ввод по-русски и отображение на экране по-русски. Вам потребуется пакет русской локализации KDE, kde-i18n-ru.tar.bz2 или его готовая версия, собранная поставщиком вашего дистрибутива, если он еще не установлен.

2. Как настроить отображение графического интерфейса по-русски?

Прежде всего задайте переменную среды LANG, например, прописав в своем домашнем каталоге в файле ~/.profile строчку:

export LANG=ru_RU.KOI8-R

Войдите в систему еще раз, чтобы переменная среды была задана до запуска X-сервера. Эта переменная задает правильную русскую локаль. Далее выберите в Центре управления KDE в разделе Personalization->Country & Language Россию, русский язык как основной и кодировку koi8-R. Возможно, в некоторых программах или в К-меню появятся знаки вопроса, тогда просто выйдите из KDE и зайдите еще раз.

3. Зачем нужна правильная локаль?

Она нужна как Х-библиотекам, так и библиотекам Qt для правильной перекодировки из кодировки UTF-8 в восьмибитную локаль и обратно. Об этом во всех подробностях можно прочитать на странице Александра Воропая, посвященной локали. В версии KDE ниже 2.1 и Qt ниже 2.3.0 без задания правильной локали все работало бы неправильно. Теперь же, начиная с Qt 2.3.0 исправлены некоторые ошибки, и вы можете попробовать обойтись без явного задания локали, указав LANG="С". Это имеет как свои плюсы, так и минусы, о чем см. ниже, пп. 7 и 8.

4. Можно ли оставить графический интерфейс на английском?

Можно. Если у вас аллергия на русскоязычный интерфейс и вам нужно только настроить отображение и ввод по-русски, оставьте интерфейс на английском и переходите сразу к настройке шрифтов и Х-сервера.

5. Как настроить шрифты?

Если у вас русский интерфейс, выберите в Центре управления KDE пункт Настройки->Внешний вид и интерфейс->Шрифты и настройте шрифты на свой вкус. Кстати, Qt, начиная с 2.3.0, поддерживает сглаживание (antialiasing) шрифтов, о чем можно прочитать здесь.

Шрифты можно настраивать и в отдельных приложениях, и это важно, если у вас вдруг где-то вместо русских символов отображаются знаки вопроса - скорее всего, нужно просто поменять кодировку шрифта на koi8-r.

6. Можно ли запускать отдельные приложения на другом языке?

Можно. Например, если вы хотите запустить KMail с немецким интерфейсом, в то время как остальные приложения - с русским, добавьте следующие строчки в конфигурационный файл приложения, то есть в ~/.kde/share/config/kmailrc:

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

При этом, естественно, должен быть установлен пакет немецкой локализации kde-i18n-de.

7. Как настроить ввод по-русски с русификацией X-сервера?

Самое лучшее - настроить клавиатурный модуль Х-сервера xkb. Вот какие настройки можно прописать в файле XF86Config (для 4.0 и выше):

   Section "InputDevice"
   ...
      Option "XkbRules"   "xfree86"
      Option "XkbModel"   "pc105"
      Option "XkbLayout"  "ru"
      Option "XkbOptions" "grp:toggle,grp_led:scroll"
         # последняя строчка служит для переключения правым Alt
         # и отображения этого лампочкой Scroll Lock
   ...
   EndSection

Подробнее об этом читаем на страничках Ивана Паскаляи Александра Канавина(и то, и другое очень рекомендуется). Такой способ настройки имеет то преимущество, что вы сможете вводить по-русски как в KDE, так и в других оконных менеджерах (или без оных :). Для проверки настройки xkb можно запустить xinit и в окне терминала попробовать ввести что-нибудь по-русски.

8. Как еще можно настроить ввод по-русски?

Как уже сказано в п.3, в версии KDE ниже 2.1 и Qt ниже 2.3.0 без задания правильной локали все работало бы неправильно. Минусом способа настройки, указанного в п.7, является то, что локаль может быть только одна (или вам нужно изощряться, переключая 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):
    en:
    KeyPress event, serial 30, synthetic NO, window 0x1c00001,
        root 0x26, subw 0x0, time 3246720013, (672,25), root:(676,389),
        state 0x1, keycode 34 (keysym 0x7b, braceleft), same_screen YES,
        XLookupString gives 1 characters:  "{"
    de:
    KeyPress event, serial 28, synthetic NO, window 0x1c00001,
        root 0x26, subw 0x0, time 3246616076, (84,131), root:(88,495),
        state 0x0, keycode 34 (keysym 0xfc, udiaeresis), same_screen YES,
        XLookupString gives 1 characters:  ""
    ru:
    KeyPress event, serial 29, synthetic NO, window 0x1c00001,
        root 0x26, subw 0x0, time 3246625571, (84,131), root:(88,495),
        state 0x2000, keycode 34 (keysym 0x6c8, Cyrillic_ha), same_screen YES,
        XLookupString gives 0 characters:  ""
    
    
  • отображение введенного текста зависит от кодировки шрифта: если вводим по-русски, нужно просто выбрать в приложении шрифт с кодировкой koi-8, если по-немецки, то - iso8859-1.

Самое интересное: задание переменной LANG на ввод таким методом не влияет, а влияет лишь на правильность отображения менюшек и сообщений программ при выборе языка интерфейса, отличного от en. То есть можно ставить LANG=de_DE.ISO8859-1 или LANG=ru_RU.KOI8-R, это ничего не испортит.

Так что можно, например, работать в KMail на любом языке, просто меняя шрифт по мере надобности.

9. Что делать, если ввод по-русски все-таки не работает?

Это может случиться из-за неправильно установленной локали при русификации X-сервера, как описано в п.7. Бывает, что усилиями поставщиков дистрибутивов ввод не работает, несмотря на вроде бы точное следование вышеприведенным инструкциям. Это означает, что где-то в недрах системных настроек скрыты установленные переменные среды. Если вы внимательно читали Паскаля, то поймете, в чем тут проблема. Вместо теории приведу примеры из практики.

  • Проверить, правильно ли установлена локаль, можно, вставив команду

    $ export | grep LANG > /tmp/xxx

    в скрипт startkde перед запуском kdeinit и посмотрев, что появится в созданном файле /tmp/xxx. Должна быть строка:

    declare -x LANG="ru_RU.KOI8-R"

    Допустим, результат -- этот файл содержит LANG=en_US. ( OS: 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. Собираем (configure; make; make install - без хитростей). Ввод работает, если запустить

$ xrusmodmap /usr/local/share/xruskb/jcuken-koi8.xmm

НО: если вы дочитали досюда, а значит, вам понадобился последний рецепт, то используйте его лишь как временное решение проблем. Прочитайте у Паскаля, чем плоха такая русификация, разберитесь и настройте-таки xkb или kxkb.

Если эти рецепты кому-то не помогают, это само по себе уже интересно. Тогда пишите.