Home    Решения    Услуги    Download    Публикации    Работа    Продукти    Документи
 

 

 
Print this page/Отпечатай тази страница  

 

LICQ и проблеми с кирилицата

от Радостин Раднев <[email protected]


Здравейте Linux user-и :-)

   Имах проблем с кирилизациаята на LICQ-то, по-конкретно ver. 0.76. Предполагам, че всички сте се сблъсквали с този проблем. И понеже това ме дразнеше, реших да се пробвам да го кирилизирам. Проблема е, че като избирате шрифт, той не се запомния и LICQ-то не се кирилизира. Става въпрос за Red Hat 6.2 с LICQ v. 0.76. Предполагам, че проблема може би съществува и в по-новите версии на LICQ. Вероятно можете да приложите същото решение и там. Проверих кода на последната версия на LICQ-то. Но имаше проблеми с Qt-то, а на мен не ми се сваляше нова версия на Qt и прочие и да тествам дали работи или не. Но проверих, че кода в частта за установяването на шрифта е същия. Което означава, че отново, ще има същите проблеми. И можете да приложите спокойно същия номер за да го кирилизирате.

   Използвани са шрифтове свалени от Linux Center-a. Пакета е на Станислав Цоловски и съм следвал неговите инструкции по инсталирането на шрифтовете. Успях. Но решението трябва да се предложи на автора и там да се фиксират малко грешки(да се направят промени на 2-3 места из кода. Това не знам кога ще стане. Може би като имам повече свободно време.

   Проблемът е, че се използва такъв метод за сетване на шрифта, който по неясни причини не работи с кирилски шрифтове. Или поне с тези шрифтове, които аз използвам. И понеже при писането на SA Dictionary за Linux имахме подобен проблем, реших да погледна в source-овете на LICQ. Промяната е малка и незначителна, така че всеки може да я извърши сам на ръка и да го прекомпилира. Да се надяваме, че в следващата версия това ще е оправено.

   Моля, ако някой има по-лесно решение да ми драсне два реда. Може би ако се пробва с други шрифтове или с нова версия било на LICQ-то или на Qt... Също така имам въпрос. Няма ли подреждане по QWERTY за Linux, което на ":" и ";" да печата ":" и ";" а не "Ы" и "ы" и същото да го прави за кавичките а не да печата "Э" и "э"?

   Моля, да ме извините за правописни грешки и неточности и повторения в текста. Това е защото ми се спи. :-)

   А сега самото решение:

1. Набавяте си изходния код на LICQ-то.
2. Разархивирате го
3. Предполагам знаете, че след това влизате в директорията, където е разархивирано и пишете:

./configure
make
make install

4. След това влизате в директорията plugins/qt-gui-xx и отново повтаряте същите команди:

cd plugins/qt-gui-xx
./configure
make
make install


5. След тези стъпки LICQ-то трябва да се е инсталирало и да работи. Какво трябва да направите за да го кирилизирате. Критична е стъпка 4. Значи стъпка 4 трябва да я изпълните по следния начин. Забележете, че промените се нанасят само за Qt-plugins не за цялото LICQ.

cd plugins/qt-gui-xx

-------- новите неща които трябва да направите

A) Влизате в директорията scr на qt-gui-xx

cd src

B) Oтваряте файла  "mainwin.cpp" с любимия си текстов редактор (например vi):

vi mainwin.cpp

и нанасяте следните промени:

C) Намирате следния пасаж код. Намира се около 235 ред в моята версия на LICQ-то (0.76)


char szFont[256];
QFont f;
licqConf.ReadStr("Font", szFont, "default");
#ifdef USE_KDE
defaultFont = KGlobal::generalFont();
#else
defaultFont = qApp->font();
#endif
if (strcmp(szFont, "default") != 0)
{
f.setRawName(szFont);
qApp->setFont(f, true);
}
licqConf.ReadStr("EditFont", szFont, "default");
if(!strcmp(szFont, "default"))
f = qApp->font();
else
f.setRawName(szFont);
delete MLEditWrap::editFont;
MLEditWrap::editFont = new QFont(f);



D) Коментирате горните редове без последните 2 реда и вмъквате още 2 реда:

// char szFont[256];
// QFont f;
// licqConf.ReadStr("Font", szFont, "default");
#ifdef USE_KDE
// defaultFont = KGlobal::generalFont();
#else
// defaultFont = qApp->font();
#endif
// if (strcmp(szFont, "default") != 0)
// {
// f.setRawName(szFont);
// qApp->setFont(f, true);
// }
// licqConf.ReadStr("EditFont", szFont, "default");
// if(!strcmp(szFont, "default"))
// f = qApp->font();
// else
// f.setRawName(szFont);


QFont f = QFont("adobecyr-times", 14);
qApp->setFont(f, true);


delete MLEditWrap::editFont;
MLEditWrap::editFont = new QFont(f);



В първия ред дефирате променливате и задавате шрифта. Шрифта се задава твърдо. Ако искате може да зададете друг размер на шрифта на мястото на 14. Ако искате да задавате други опции на шрифта трябва да се консултирате с документацията на Qt. Ако искате можете да зададете друго име на шрифта, разбира се, след като се компилира LICQ-то няма да може да му променяте шрифта, но той поне ще е кирилизиран. :-)) Възможности с избор на шрифт в следващата версия. :-))

Във втория ред set-вате шрифта да може да се използва от приложението. Останалите два реда са си от оригиналния код. Там се указва на "edit" контролата да използва новия шрифт.

Продължавате със старите неща като конфигуриране и инсталиране:

./configure
make
make install


и като изпълните всички тези стъпки, LICQ-то би трябвало да работи с установен кирилски шрифт, който за съжаление обаче няма да може да се променя.

Радостин Раднев
[email protected]