Разни english

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 Разни

  1. 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 #

Вашият коментар


Georgi’s Blog is proudly powered by WordPress
Постове (RSS) and Коментари (RSS).
Get Firefox! Creative Commons License
21 queries. 0,766 seconds.