Кирчо

поддръжка на кирилица за Java 2 под GNU/Linux

http://cyrcho.sourceforge.net

версия 0.6 от 11 февруари 2002 г.

Калоян Доганов <kaloian@users.sourceforge.net>

1. Системни изисквания

2. Инсталация

Модулът cyrcho-0.6.jar е проектиран като стандартно разширение на Java Runtime Environment (JRE). Копирайте го в директорията <JAVA-ROOT>/jre/lib/ext, където <JAVA-ROOT> е директорията, където е инсталирана Java. По-опитните потребители биха предпочели да направят символна връзка, вместо да копират файла, но това е въпрос на лично предпочитание.

От тук нататък вече можете да стартирате java със следния скрипт:

#!/bin/bash
export LANG=C
<JAVA-ROOT>/bin/java $@

Можете да кръстите този скрипт java и да го разположите на подходящо място, така че да се изпълнява по подразбиране когато стартирвате Java приложения. Точното местоположение на скрипта зависи от конкретната дистрибуция на GNU/Linux, която използвате.

Остава само да изберете клавишната комбинация, с която ще превключвате между стандартната клавиатура и кирилицата. Това става чрез контролния панел на Кирчо, който се появява след като изпълните cyrcho-0.6.jar:

java -jar cyrcho-0.6.jar

контролен панел на Кирчо

Предпочитаната клавишна комбинация се пази по отделно за всеки потребител, така че върху една система всеки може да посочи собствените си предпочитания, без да пречи на останалите.

3. Подробности

Проблемите по кирилизацията на Java 2 под GNU/Linux могат да бъдат разделени на две:

3.1. Кодиране CP1251

Както забелязвате от скрипта, текущата локализация на системата се изключва за обкръжението на Java. Това е необходимо, защото ако имате правилно локализирана GNU/Linux система, Виртуалната машина на Java изобщо няма да се стартира. В този случай командата java връща подобно съобщение за грешка:

Error occurred during initialization of VM
java.lang.NullPointerException

Най-вероятно това става защото в локализираната система по подразбиране се използва кодиране CP1251, което не се поддържа от новата система за вход/изход (java.nio) на Java 2 версия 1.4. Затова Кирчо предлага поддръжка на CP1251 за java.nio. В beta 3 на Java 2 версия 1.4 възможността за добавяне на външни кодери беше временно изключена. При изданието RC тя отното е включена, и вече правилно да разпознава и използва кодирането CP1251, което доставя Кирчо. Това обаче не оправя проблема със забиването при стартиране на Java, затова смяната на локала все още е наложителна. Нищо не ни остава освен да се надяваме, че в официалното издание на Java 1.4 такава смяна няма да е необходима. Наистина е абсурдно Виртуалната машина да забива върху една нормално локализирана система, но тъй като изходният код на Java не е свободен, не можем да оправим проблема сами и трябва да чакаме височайше благоволение от Sun да се сети за малка България. :-(

Имайте предвид, че кодерът за CP1251 на Кирчо не е тестван в реални условия, така че евентуално ще изплуват някои грешки. Така че ако имате проблеми или предложения относно Кирчо, пишете в JUG-BG.

3.2. Вход на кирилица за Swing

текстово поле без кирилицаОткакто XFree86 4.x и Java 2 се разпространиха из системите GNU/Linux, няма никакъв шанс едно Java приложение да получи вход на кирилица. Опитът да се въведе кирилица в обикновено текстово поле на Swing (JTextField) води до появата на странни клянги. В прозореца отляво е показан резултатът от опита да се въведе "Кирчо" в текстово поле. В по-голямата си част са изобразени еврейски и арабски символи, от което можем да съдим, че Java получава Уникод от XFree86, но кирилицата, която въвеждаме, преминава през някакво станно преобразувание преди да стигне до приложението. Не мога да кажа дали XFree86 грешно говори на Java, или самата Java грешно разбира XFree86, но резултатът е плачевен. Абсурдът е, че Java разполага с правилните шрифтове да изобрази кирилицата, но просто не се разбира с XFree86. Според официалната документация на Sun, такава поддръжка засега не се предвижда.

текстово поле с кирилицаТъй като спасението е в ръцете на давещия се, главната цел на Кирчо е да предложи такава поддръжка. От Java 2 версия 1.3 нататък Sun предлагат стандартен API за въвеждане на символи от чужди (сиреч не-английски) езици -- това са т.нар. Input Methods. Кирчо използва този API и застава между XFree86 и Вашето Swing-приложение. Той динамично прекодира тези Уникод-символи, за които подозира че би трябвало всъщност да бъдат интерпретирани като кирилица. Така Swing-приложението получава редовна Уникод кирилица и я визуализира спокойно. За да активирате тази намеса на Кирчо, трябва да изберете "Cyrillic" от менюто "Select Input Methods":

меню Select Input Methods

Първата версия на Кирчо (0.5) изискваше промяна в изходния код на приложението, от което желаете да въвеждате кирилица. От версия 0.6 такава промяна не е необходима.

4. Сваляне и лиценз

Кирчо се разпространява при условията на GNU Lesser General Public License (GNU LGPL). Това означава, че можете без притеснения да го използвате за както за свободни, така и за несвободни (затворени) приложения. Не е необходимо да отваряте изходния код на Вашето приложение, което използва Кирчо. Но ако правите промени по самия Кирчо, тези промени се поставят под силата на GNU LGPL, така че се задължавате да ги споделите с общността.

Можете да свалите Кирчо по два начина:

5. Проблеми

Срещате ли проблеми? Пишете до JUG-BG за да ги разгледаме заедно.

6. Промени


SourceForge Logo 11 февруари 2002 г. Valid XHTML 1.0!