Разни 
06.03.2007Категория: Животът ми
Последните няколко дни ( седмици ) се занимавах с няколко интересни аспекта на интернационализация под линукс. От началото на семестъра се захванах с превод на РасМол. Нищо интересно в тази част, но когато се появиха китайски и японски преводи на програмата, трябваше аз да направя модификациите за да може менютата да работят с глифовете на тези два езика. Проблемите бяха следните:
Графичната част на РасМол е на Xlib. Никакви ГТК или КюТи. Та в Xlib, по принцип, се ползват XDrawString и XDrawText функциите за да се “рисува” текст по менютата. Всичко работи добре, стига да не пристъпваме в източно азиатските езици. Там един глиф може да е повече от 1 байт, което има интересен ефект в/у еднобайтовите функции споменати по-горе. За щастие хората от Xlib са помислили за това и са направили и XmbDrawText и XmbDrawString, обаче те работят на съвсем друг принцип. За да може глифовете да се покажат на екрана, трябва да се ползва списък с шрифтове, които могат да декодират текста, да се настрои ЛОКАЛЕ-то и да се ползват странни хакове за изчисляване на дължината на текста. И така тук се появяват и XCreateFontSet, който създава структура XFontSet, който се изисква от XmbDraw*. Добре, имаме инструментите за работа, ама трябват и шрифтове. Пък и текста трябва да е правилния енкодинг. Не може да си ги боднем UTF ( заради ендианите и заради факта, че Хлиб не го поддържа както трябва, въпреки XwcDraw* функциите ), а трябва всеки език да си е в негоия енкодинг. След това се разбра, че всички езици са в един файл и не може просто да го запазите 4 пъти в 4те енкодинга, а трябва да се отделят езиците, да се запазят в енкодинга, в който ви трябва, да се cat-нат в един голям файл и да се запали свещичка за да не се обърка нещо м/у 4те енкодинга, които са:
iso8859-1 ( още известен като latin-1 ) за западно европейските езици
cp1251 ( още известен като windows-1251) за кирилица
cp936 за Китайски
eucjp ( euc-jisx0213, shift-jisx0213, sjis, ujis и каква ли още не вариация ) за Японски
та накрая имаме 1 файл, който посмъртно не може да бъде показан целия във всички езици. Но добре че има iconv, та не е толкова трудна горната процедура. Най-трудно е да се уцелят енкодингите…
За мое утешение си направих и един утф-8 файл в който има всички езици ( и който се вижда идеално целия ).
Та в крайна сметка си имаме вече расмол на Английски, Български, Испански, Италиански, Китайски, Руски, Френски и Японски и в линукс всички се виждат без проблем ( както и под уиндоус с малко пипане по настройките и няколко рестартирания за всеки език ).
Та с това се занимавах предимно, сега ще направя малко козметични промени по кода и ще го пуснем да се ползва ( не че вече го няма онлайн де… )
—
Гугъл ми писаха преди 1 седмица ( точно 1 месец след като започна всичко ) писмо, в което ми благодарят за отделеното време и ме уведомиха, че след внимателно преглеждане на опита и квалификациите ми, нямат силно подходяща позиция за мен в момента. Щеше да е готино да натрупам опит от тях преди да завърша, ама йок. Подозирам, че са имали МНОГО кандидати и съдейки по това което чета из нета за тях, хората от по-добри училища май са с предимство, но не е сигурно де…
—
Трябва да почвам английския превод и да ходя да ям после…
Един коментар at Разни
Вашият коментар
Georgi’s Blog is proudly powered by
WordPress
Постове (RSS)
and Коментари (RSS).

21 queries. 0,766 seconds.


Hi, I’m going to have a Google interview for the exact same position you applied for. They say that I will have two 45-minute technical interviews. I’m quite nervous and am wondering what kind of questions they asked you when you had your interview. I would _really_ appreciate it if you could just drop me a line at rluciani@gmail.com
thank you!
~Robert
Коментар от Robert Luciani — 14. март 2007 #