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

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


-


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

<>Проект перевода KDE на русский был начат в 1998 г. Сейчас этим занимается небольшая команда переводчиков, а координирует проект Григорий Мохин. Если вам поскорее хочется воспользоваться плодами ее трудов -- установите у себя KDE >=2.1. Учтите, что 2.0 и 2.0.1 не идут ни в какое сравнение с 2.1 ни в том, что касается самой среды, ни в качестве перевода на русский.

Этот документ адресован тем, кто хотел бы работать в KDE по-русски. Его цель - постараться ответить на вопросы, обычно встающие при русификации 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.

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