![]() |
Архив. Новости и комментарии | ![]() |
![]() |
![]() |
![]() |
![]() |
Новости и Комментарии. 15 января - 21 января | ![]() |
![]() |
![]() |
![]() |
![]() |
KSI Linux и русификация.
Сегодняшний комментарий посвящен выходящему вскоре KSI Linux 2.0 (Nostromo). Предупредим сразу: мы будем жестко критиковать методы русификации Linux, выбранные автором KSI Сергеем Кубучиным. Наше мнение стало известно ему более недели назад, но полученный ответ не был конструктивным. С дистрибутивом уже сейчас работают многие российские и украинские пользователи. Мы в свое время не изучив внимательно бета-версию KSI , назвали его правильно русифицированным . Приносим глубокие извинения своим читателям и считаем необходимым высказаться сейчас. Если в Nostromo что-либо принципиально измениться, - мы обязательно сообщим об этом. Перевод сообщений программ и документации на русский - только одна, хотя и очень важная сторона русификации. С этой точки зрения, KSI 2.0 - большой шаг вперед. KSI - один из двух (второй - Black Cat Леона Кантера) русско-украинских дистрибутивов Linux. Открытое ядро Urbansoft, Red Hat 5.2 от фирмы Vinchi, наш Mandrake 5.2 Russian Edition и другие - это все же международные дистрибутивы Linux с русификацией. Что правильнее - создавать национальный дистрибутив (как KSI) или стремиться интегрировать русификацию в дистрибутивы международные - отдельный вопрос, сейчас мы его поднимать не будем. Обратимся к рассмотрению компонентов русификации KSI - кодировке, locale, русификации X и приложений. Кодировка или точнее, charset, используемый в Nostromo, называется KOI8-R. Сharset этот вы можете найти, как всегда, в файле /usr/share/i18n/charset/KOI8-R : ----------cut---------- <code_set_name> KOI8-R <comment_char> % <escape_char> / %version: 1.0 %repertoiremap: mnemonic,ds % source: RFC1489 via Gabor Kiss <kissg@sztaki.hu> % and Andrey A. Chernov <ache@astral.msk.su> % and Serguei I. Koubouchine <ksi@ksi-linux.com> ----------cut----------- %<Dr> /xA4 <U2553> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE <ie> /xA4 <U0454> CYRILLIC SMALL LETTER UKRAINIAN IE <DR> /xA5 <U2554> BOX DRAWINGS DOUBLE DOWN AND RIGHT %<dL> /xA6 <U2555> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE <ii> /xA6 <U0456> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIANI %<Dl> /xA7 <U2556> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE ----------cut------------ Нетрудно видеть, что это не KOI8-R и не RFC1489. В charset введены четыре украинские буквы вместо символов псевдографики. Интересно. что в апреле 1998 года была принята украинская кодировка KOI8-U (RFC2319) , которая отличается от KOI8-R именно этими четырьмя буквами (восемью символами). Последствия, к которым приведет использование KOI8-R по KSI нетрудно предвидеть. Так как в locale ru_SU (и ru_RU) содержатся украинские и другие кириллические символы, то к буквам окажутся причислены 8 символов псевдографики настоящего KOI8-R, что может явиться весьма неприятным сюрпризом как для программистов, так и для пользователей. Почему эта кодировка не названа KOI8-U? Почему KOI8-U вообще нет в Nostromo? locale ru_SU в KSI 2.0 отличается от входящей в glibc2, она исправлена г-ном Кубучиным. В качестве десятичного разделителя используется точка, а в качестве валюты - американский доллар. Отдавая должное юмору автора в последнем случае, заметим, что десятичную запятую у нас не отменили. Может быть, ее отменили на Украине? Нет, в Linux Ukrainian Howto Дениса Дмитриенко приведены locale uk_UA и ru_UA, в которых оставлена запятая. Нужно ли менять стандарты, даже если они не нравятся? Можно ли назвать такой дистрибутив русским? Вряд ли. В нем не только нет откомпилированной locale, соответствующей ru_RU.KOI8-R, в нем даже попытка создать такую locale при помощи localedef обычным для _всех_ других дистрибутивов способом, приведет к неверному результату. Можно ли назвать такой дистрибутив украинским? Без charset KOI8-U ? Без locale uk_UA? Заметим, однако, что эти, на наш взгляд, несуразности, отчасти можно вылечить средствами, имеющимися в KSI. По крайней мере, KOI8-R(KSI) - это KOI8-U(поправьте меня, если не так - я не нашел отличий), а настоящая KOI8-R приведена под именем KOI8-R.rulocale. Достаточно их откомпилировать. Правда, с украинским языком будет посложнее... Уважаемый читатель! Мы, наверняка, утомили вас всеми этими KOI8-*, но, что поделаешь, столько уж для нас придумали кодировок. Мы в первый раз, правда, сталкиваемся с тем, чтобы на них надевали маски. Дальше, однако, мы расскажем об особенностях русификации "по KSI", которые исправить сложнее, потому что закопаны они глубже. Речь идет о русификации X Window System. Напомним, что существует два метода обеспечить ввод кириллических (равно как и китайских. еврейских, греческих и пр.) букв в X: старый и новый, xmodmap и Xkb. Первый метод признает только обднобайтовые символы и не позволяет, таким образом, определить, буквы какого алфавита используются. Он обладает рядом неприятных особенностей (в нелатинском регистре не работают CTRl-*, при запирании экрана нельзя переключить регистр). На процедурах, оставшихся от этого метода, работают такие знаменитые программы как xrus и kikbd. Этот "неправильный" метод описан в Cyrillic Howto и применяется почти во всех предлагаемых пакетах русификации, исключая наши и, как мы считали, KSI Linux. На этом же методе основана украинизация X, предлагаемая в The Linux Ukrainian Howto. Другой метод - "передовой", - xkb. При вводе символы кодируются двухбайтной последовательностью и прикладная программа может выяснить, символ какого алфавита введен. Этот способ используют очень многие программы, а некоторые - в полном объеме, например, Netscape. Netscape для glibc2 настолько любит этот метод и учитывает locale, что просто не даст вам ввести символ, несоответствующий locale (и Xlocale). Star Office также использует xkb, но так как версии, поддерживающие языки, отличные от тех, которым хватает Latin-1, еще не написаны, то он не даст ввести русские, например, буквы, если его не обмануть. Заметим, что серьезные проблемы возникают только с коммерческими программами, так как остальные несложно, как правило, подправить (см. страницу А.Чернова). Если посмотреть на программы, входящие в KSI Linux, то можно отметить, что почти все они благополучно работают с xkb. Исключение составляют Lyx и несколько вариантов xterm (rxvt, например). Что касается Lyx, то у него свой, довольно странный, способ ввода символов и. описав для него русскую клавиатуру, можно вводить русский текст (хотя и не очень удобно - перключаясь кнопкой Pause). Пакет русификации Klyx (для Lyx - то же самое), можно найти на нашей странице Software. Необученность же rxvt исправить совсем несложно, что, впрочем, уже сделано в Debian 2.0. Казалось бы, что можно использовать xkb. Можно и xruskb (kikbd), тем более, что оба они входят в Nostromo. Но не тут то было... Как мы уже говорили, Xkb передает прикладной программе двухбайтовый код. Это - внутренняя кодировка X, она находится в файле /usr/X11R6/include/X11/keysymdef.h. Именно этот файл и исправлен в KSI! Вы, наверное, уже догадались как: кирилические символы, имеющие старший байт 6, помещены на место Latin-1 (старший байт - 0). Вот фрагмент оригинального keysymdef.h: ---------cut------------- #define XK_Cyrillic_YU 0x6e0 #define XK_Cyrillic_A 0x6e1 #define XK_Cyrillic_BE 0x6e2 #define XK_Cyrillic_TSE 0x6e3 #define XK_Cyrillic_DE 0x6e4 #define XK_Cyrillic_IE 0x6e5 ---------cut------------- А вот - он же из KSI: ---------cut------------- #define XK_Cyrillic_YU 0x0e0 #define XK_Cyrillic_A 0x0e1 #define XK_Cyrillic_BE 0x0e2 #define XK_Cyrillic_TSE 0x0e3 #define XK_Cyrillic_DE 0x0e4 #define XK_Cyrillic_IE 0x0e5 ---------cut------------- Это мало чем отличается от пресловутого метода "xmodmap" по сути, но зарыто весьма глубоко и, как и все игры с кодировками, может привести к грустным последствиям. Каким? Во-первых, установив единожды KSI, вы сможете получать последующие версии XFree только от KSI . XFree от XFree86.org откажется русифицироваться/украинизироваться по KSI. Во-вторых, написанная вами программа, исправно вводящая русские/украинские буквы под KSI может отказаться это делать под любым другим дистрибутивом. И наоборот. KSI - единственный (по крайней мере, из известных нам) дистрибутив Linux, который позволил себе столь глубокий хак XFree. В -третьих, Netscape для glibc2 (а KSI -- glibc2-дистрибутив) откажется вводить русские буквы без насилия, хотя он прекрасно работает в нормальных условиях. Netscape тоже придется брать от KSI. Кстати, о Netscape. В KSI входит версия 4.07 для libc5. Для успешной работы с различными украинскими кодировками исправлен исполняемый файл Netscape. Интересно, что такие рецепты насилия над Netscape можно встретить на некоторых русских сайтах , но на украинских - нет! Несмотря на то, что фирма не поддерживает пока KOI8-U, украинские линуксоиды поступают с Netscape честно и работают над украинизацией Mozilla. Здесь (и не только здесь) нам есть чему у них поучиться. Назовем вещи своими именами. В дистрибутиве KSI 2.0 размываются стандарты как национальные (и российские, и украинские), так и международные. Это первый дистрибутив Linux, который действительно несовместим с другими. Это первый случай регулярной подмены названия кодировки. Но это и самый первый самостоятельный русскоязычный дистрибутив Linux. Это первый русскоязычный дистрибутив Linux, имеющий поддержку со стороны государства (украинского, конечно). В Советском Союзе был богатый опыт превращения чужих операционных систем в "свои", имевшие ограниченную совместимость с оригиналом. Неужели мы хотим это повторить? То, о чем писал сотрудник Microsoft Vinod Vallopillil , причудливым образом отбразилось у нас. Halloween V -- по-советски? Пишите. AEN |
![]() |
![]() |
![]() |
![]() |
![]() |
|Начало|Комментарии| | ![]() |
![]() |
© IPLabs Linux Team , 1999 , 1998 | Использование материалов═ разрешается только со ссылкой═ на═ первоисточник. |