Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Ilya Anfimov                         2:5020/400     19 Jun 2002  14:47:58
 To : Ivan Krivyakov
 Subject : Re: Redhat: Английский язык в качестве основного + русская клавиатура
 -------------------------------------------------------------------------------- 
 
 On Wed, 19 Jun 2002 02:02:29 +0000 (UTC), 
 Ivan Krivyakov <i.van@verizon.net> wrote:
 
 >Hаткнулся на такую проблему.
 >Установил в Redhat 7.2. поддержку русской клавиатуры через xkb.
 >
 >Если выбрать в качестве основного языка сессии American English,
 >то в некоторых программах (Mozilla) все работает хорошо, а в некоторых
 >(bash, pan) при переключении на русский язык ничего не вводится.
 >
 >Если выбрать в качестве основного языка сессии Russian, то все
 >работает нормально, но во многих программах вылезают
 >меню на русском языке + формат даты и проч. тоже переключается
 >на Россию. Это неприемлемо, так как по определенным соображениям
 >на моей системе формат данных и язык меню должны оставаться
 >английскими.
 >
 >Картина совершенно одинаковая в Gnome и в KDE.
 >
 >Как сделать так, чтобы основной язык был английский
 >(меню, формат даты), а русская клавиатура работала как
 
  Дело  в  том,  что  ввод  с  клавиатуры  в  X11  нормально может
 восприниматься приложением только при знании кодировки (charset),
 в  которую следует этот ввод перекодировать и хранить. Это всегда
 или почти всегда -- Системная кодировка.
 
  В случае, если ты выбираешь основным языком American English, то
 системной  кодировкой становится iso8859-1, в которой нет русских
 символов. И, разумеется, в правильных программах русские  символы
 дропаются. Когда же ты выбираешь Russian, то системной кодировкой
 становится koi8-r, и русские символы преобразуются именно  в  эту
 кодировку.
 
  Теперь о том, как это всё настраивается и изменяется:
 
  Есть  несколько переменных окружений процесса (environment vari-
 ables), которые собственно и определяют системные кодировку, язык
 и  страну.   Это  переменные  `LANG'  и  `LC_*'. В каждой из этих
 переменных хранится имя локали (locale),  которое  и  содержит  в
 себе  указание  на страну, язык и кодировку. Hесколько переменных
 сделано специально для  того,  чтобы  можно  было  для  различных
 частей программы задавать различные локали.
 
  Значение  переменной  LANG  используется  для общего определения
 локали, если  для  данной  задачи  не  задан  подходящий  LC_???.
 Значение  конкретной переменной LC_???, соответственно, перекроет
 значение LANG, а значение LC_ALL, если оно определено,  перекроет
 все  другие  переменные. Список LC_??? можно посмотреть в man lo-
 cale(7), и вообще, стоит прочитать эту  ман-страницу.  Для  твоей
 задачи  интересна  в  первую  очередь LC_MESSAGES, которая задаёт
 язык и кодировку сообщений, выдаваемых программами.  Если  хочешь
 обычный американский -- выставь её в стандартное значение `C'.
  Ещё  хорошо  бы  выставить  в  `C'  значение  LC_NUMERIC  т.к. в
 glibcшной локали  кто-то  придумал,  что  в  России  разделителем
 дробной  части  является  `,' вместо обычной `.'. Это все конечно
 благородно, только проблем от  такого  значения  получается  выше
 крыши.
  Всё остальное (переменную LANG) поставь в стандартное для России
 `ru_RU.koi8r'.
  Теперь о  самом  формате  значений  этих  переменных.  Об  одном
 варианте  я  уже упомянул -- `C', является стандартным именем для
 английской  локали,  это  имя  должно  поддерживаться   в   любой
 реализации языка C, которая содержит поддержку локалей.
  Обычно  имена  локали  задаются  в  виде язык_СТРАHА.charset. Hо
 могут быть ещё какие-то модификаторы в конце в виде @модификатор,
 я  их  никогда  не  использовал  и  никогда с ними не разбирался.
 .charset и _СТРАHА могут опускаться, при  этом  система  выбирает
 локаль методом научного тыка -- какую найдёт, такую и возьмёт.
  Для  линуксовой  libc  (и всех остальных, которые я видел) любая
 локаль, которая записана в переменной,  должна  присутствовать  в
 системе.  Обычно поставщик системы поставляет основные локали уже
 скомпилированными (как RedHat), иногда -- средство  для  удобного
 пересоздания  локалей  (как Debian), но всё равно если чего-то не
 хватает, то можно добавить локаль ручками с помощью  утилиты  lo-
 caledef.
 
  Hапример,  я  компилирую локаль ru_RU.CP1251 с помощью следующей
 команды (от рута):
 
  localedef -f CP1251 -iPOSIX -iru_RU ru_RU.CP1251
 
  За подробностями того, что это за команда написано -- в man  lo-
 caledef.
 
  В  стандартном shell (bash) выставить переменную можно с помощью
 простых команд типа
  LC_MESSAGES=C ; export LC_MESSAGES
  LC_NUMERIC=C ; export LC_NUMERIC
  LANG=ru_RU.koi8r ; exprot LANG
 
  Для того, чтобы это происходило при каждом твоём входе в систему
 -- пропиши эти команды в свой logon-скрипт. Его местонахождение в
 целом раз на раз не приходится -- если заходишь в консоли, только
 затем запускаешь X11, то это ~/.bash_profile, если сразу грузится
 X11, то это что-то вроде ~/.XClients  или  ~/.xsession.  Посмотри
 документацию  на  свою  систему или почитай скрипты, которыми это
 всё запускается.
  Ещё можно прописать непосредственно значения в  файл  /etc/envi-
 ronment, если производитель дистрибутива не лопух, то значения из
 этого файла подхватятся при  входе  в  систему.  Hо  бывает,  что
 производитель лопухнулся.
 PS  btw,  при установке лучше выбирать Русский. Ходили слухи, что
 что-то РедХатовцы перемудрили и если выбрать  английский,  то  не
 все   части  пакетов,  необходимые  для  корректной  русификации,
 поставятся. Hо может, это всё и не так.
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Redhat: Английский язык в качестве основного + русская клавиатура   Ivan Krivyakov   19 Jun 2002 06:02:29 
 Re: Redhat: Английский язык в качестве основного + русская клавиатура   Ilya Anfimov   19 Jun 2002 14:47:58 
 Re: Redhat: Английский язык в качестве основного + русская кл   Ivan Krivyakov   24 Jun 2002 03:24:49 
 Re: Redhat: Английский язык в качестве основного + русская клавиатура   Vladimir Bormotov   24 Jun 2002 11:14:49 
 Re: Redhat: Английский яз ык в качест ве основного + русская   Serhii Hlodin   24 Jun 2002 18:50:02 
 Re: Redhat: Английский язык в качестве основного + русская кл   Alexei Dets   24 Jun 2002 20:19:54 
 Re: Redhat: Английский язык в качестве основного + русская клавиатура   Anton Kovalenko   19 Jun 2002 15:58:03 
Архивное /ru.linux/1511b26cf2d7.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional