Hi All,

Today I got the Congratulations mail from Google saying I have successfully
passed the final evaluation of GSOC 2013!

It has been a great pleasure and experience for me to work with OM
community.  Since the ideas are published in Apache Jira, I worked with the
pretty dynamic and active community of OM. I learned lot of things which
were new to me. But ultimately I got the opportunity to contribute to many
public projects. All these successful things has happen because of the
guidance and help given by all the devs. Specially my mentor Maxim, I have
never seen such active person in my life. He was always there to guide me!
So thank you very much all! For everything!

Also I am not planning to leave with the completion of GSOC. I am
completing my degree in this December. If you allow me to work with OM
community if you think I have the potential to work with the community, I
would like to be there.

Thanks!


On Sun, Sep 22, 2013 at 11:34 PM, Andun Sameera <andun...@gmail.com> wrote:

> Thanks Andrey!
>
> I think all the things which need to be added to the Whiteboard under GSOC
> is done now. I have successfully committed all these to Wicket-Stuff repo.
> I have added it to main-build of Wicket-Stuff. Sooner it will be released
> in public. Also I have added a wiki page for the Whiteboard in
> https://github.com/wicketstuff/core/wiki/Whiteboard.
>
> Tomorrow the firm pencil down of GSOC will happen. I will update all these
> code samples there and will finish the GSOC task.
>
> After the release of Wicket-Stuf we can use the whoteboard inside OM.
>
> Thanks!
>
>
> On Sun, Sep 22, 2013 at 11:06 PM, Bogdanov Andrey <ba...@mail.ru> wrote:
>
>> I think this will work. The only requirements - lang should be set before
>> including of whiteboard.js
>>
>>
>>
>> Воскресенье, 22 сентября 2013, 1:41 +05:30 от Andun Sameera <
>> andun...@gmail.com>:
>>
>>   I have no deep idea about the OM translation logic. I know only how to
>> get the values. I think Maxim can help to get  inside out idea.
>>
>> While that is like that I have succeed in th hack. Now the translation
>> works fine in this manner. There is a global variable called lang. That is
>> initialized via query params. Also there are array like ru, en, sp, etc.
>> which contains text in different languages. All these code lies in
>> translate.js.
>>
>> function getParameterByName(name) {
>>     name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
>>     var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
>>         results = regex.exec(location.search);
>>     return results == null ? "" :
>> decodeURIComponent(results[1].replace(/\+/g, " "));
>> }
>>
>> var lang=getParameterByName('lang');
>> var ru =
>> {
>> // Tooltips for buttons
>>     "Common tools":                                       "Общие
>> инструменты",
>>     "Zoom in":                                            "Увеличить",
>>     "Zoom out":                                           "Уменьшить",
>>     "Show coordinates":                                   "Показывать
>> координаты",
>>     "Clear all":                                          "Очистить все",
>>     "Clear traces":                                       "Очистить
>> следы",
>>     "Show information about selected element":            "Информация об
>> элементе",
>>
>>     "Ruler-and-compass constructions":                    "Построения
>> циркулем и линейкой",
>>     "Single point":                                       "Точка",
>>     "Line through two points":                            "Прямая,
>> проходящая через две точки",
>>     "Line segment connecting two points":                 "Отрезок,
>> соединяющий две точки",
>>     "Circle with radius equals to the given segment":     "Окружность с
>> заданным радиусом",
>>     "Circle with given center":                           "Окружность с
>> заданным центром",
>>
>>     "Free hand drawing":                                  "Рисование",
>>     "Insert picture":                                     "Вставить
>> картинку",
>>     "Change whiteboard background":                       "Изменить обои",
>>     "Curve":                                              "Кривая линяя",
>>     "Polyline":                                           "Ломаная линия",
>>     "Rectangle":                                          "Прямоугольник",
>>     "Circle":                                             "Окружность",
>>     "Text box":                                           "Текст",
>>     "Highlight board area":                               "Выделить
>> участок доски",
>>     "Draw an arrow":                                      "Стрелка",
>>     "Highlight a point at whiteboard":                    "Отметить точку
>> на доске",
>>
>> // Controls at the info dialog
>>     "Click to select other element":                      "Нажмите для
>> выбора следующего элемента",
>>     "Hide":                                               "Скрыть",
>>     "Click to hide element":                              "Нажмите, чтобы
>> скрыть элемент",
>>     "Trace":                                              "След",
>>     "Color":                                              "Цвет",
>>     "Click to select color":                              "Нажмите для
>> выбора цвета",
>>     "JSON code for drawing":                              "JSON-код для
>> рисунка",
>>
>> // Element Labels in the info dialog
>>     "ClipArt does not exist":                             "Картинка
>> отсутствует",
>>     "ClipArt from [{$label}]":                            "Картинка,
>> источник {$label}",
>>     "Point does not exist":                               "Точка не
>> сушествует",
>>     "Point: [{$x},{$y}]":                                 "Точка
>> [{$x},{$y}]",
>>     "Line does not exist":                                "Линия не
>> существует",
>>     "Line [{$fromx},{$fromy}] - [{$tox},{$toy}]":         "Линия от
>> [{$fromx},{$fromy}] до [{$tox},{$toy}]",
>>     "Circle does not exist":                              "Окружность не
>> существует",
>>     "Circle [{$x},{$y}] -> {$r}":                         "Окружность
>> [{$x},{$y}] -> {$r}",
>>     "Curve does not exists":                              "Кривая не
>> существует",
>>     "Rectangle does not exist":                           "Прямоугольник
>> не существует",
>>     "Text does not exist":                                "Текст не
>> существует",
>>     "Text [{$label}]":                                    "Текст
>> [{$label}]",
>>     "Underline does not exists":                          "Выделение не
>> существует",
>>     "Underline":                                          "Выделение",
>>     "Arrow does not exists":                              "Стрелка не
>> существует",
>>     "Arrow":                                              "Стрелка",
>>     "Pointer does not exists":                            "Указатель не
>> существует",
>>     "Pointer [{$x},{$y}]":                                     "Указатель
>> на [{$x},{$y}]",
>>
>> // Messages
>>     "This browser doesn''t support graphics. Please use another web
>> browser.":
>>         "Ваш браузер не поддерживает графику. Пожалуйста, используйте
>> другой браузер"
>> };
>>
>> in whiteboard.js we have this getMsg implementation,
>>
>> goog.getMsg = function(str, opt_values) {
>>
>>     console.log("--------------------------------------");
>>     console.log(goog.LOCALE);
>>     console.log(lang);
>>     var translation = window[lang] || {};
>>     console.log(translation);
>>     console.log("######################################");
>>     str = translation[str] || str;
>>     var values = opt_values || {};
>>     for (var key in values) {
>>         var value = ('' + values[key]).replace(/\$/g, '$$$$');
>>         str = str.replace(new RegExp('\\{\\$' + key + '\\}', 'gi'),
>> value);
>>     }
>>     return str;
>> };
>>
>> So we can pass lang via query params and do the dynamic language
>> translation well. I think this method is OK. WDYT?
>>
>> Thanks!
>>
>>
>>
>> On Sun, Sep 22, 2013 at 1:12 AM, Bogdanov Andrey 
>> <ba...@mail.ru<https://e.mail.ru/sentmsg?mailto=mailto%3aba...@mail.ru>
>> > wrote:
>>
>> goog.LOCALE should be set before including of whiteboard.js script, but
>> in compiled version "goog" variable is defined inside this script, so
>> LOCALE couldn't be set.
>> In the current committed versiion I didn't use goog.LOCALE and used
>> independent variable current_LOCALE.
>> Also I put goog.getMsg inside the script, but left transaltion strings
>> outside - this allows to use different transllation files.
>>
>> Which translation approach is using in other parts of OM project? I think
>> whitboard translation should be synchronized with them.
>>
>> Regards,
>> Andrey
>>
>>
>>
>> Воскресенье, 22 сентября 2013, 0:58 +05:30 от Andun Sameera <
>> andun...@gmail.com<https://e.mail.ru/sentmsg?mailto=mailto%3aandun...@gmail.com>
>> >:
>>
>>   I did this kind of a hack. I put all this code in to the
>> whiteboard.js. Just after the line of 299
>> https://github.com/wicketstuff/core/blob/master/jdk-1.6-parent/whiteboard-parent/whiteboard/src/main/resources/org/wicketstuff/whiteboard/resource/whiteboard.js.
>> When I did that I see the getMsg function executes each and every time
>> which is referred. But the thing is the goog.LOCALE return en instead of
>> ru. I put
>>
>> goog.LOCALE = 'ru';
>>
>> this code in to the wicket head. But I think it is not set when the
>> getMsg is run. I am searching for place to put this initialization which
>> will pick up by getMsg. Will this work ?
>>
>> Thanks!
>>
>> Inserted code ,
>>
>> var ru =
>> {
>> // Tooltips for buttons
>>     "Common tools":                                       "Общие
>> инструменты",
>>     "Zoom in":                                            "Увеличить",
>>     "Zoom out":                                           "Уменьшить",
>>     "Show coordinates":                                   "Показывать
>> координаты",
>>     "Clear all":                                          "Очистить все",
>>     "Clear traces":                                       "Очистить
>> следы",
>>     "Show information about selected element":            "Информация об
>> элементе",
>>
>>     "Ruler-and-compass constructions":                    "Построения
>> циркулем и линейкой",
>>     "Single point":                                       "Точка",
>>     "Line through two points":                            "Прямая,
>> проходящая через две точки",
>>     "Line segment connecting two points":                 "Отрезок,
>> соединяющий две точки",
>>     "Circle with radius equals to the given segment":     "Окружность с
>> заданным радиусом",
>>     "Circle with given center":                           "Окружность с
>> заданным центром",
>>
>>     "Free hand drawing":                                  "Рисование",
>>     "Insert picture":                                     "Вставить
>> картинку",
>>     "Change whiteboard background":                       "Изменить обои",
>>     "Curve":                                              "Кривая линяя",
>>     "Polyline":                                           "Ломаная линия",
>>     "Rectangle":                                          "Прямоугольник",
>>     "Circle":                                             "Окружность",
>>     "Text box":                                           "Текст",
>>     "Highlight board area":                               "Выделить
>> участок доски",
>>     "Draw an arrow":                                      "Стрелка",
>>     "Highlight a point at whiteboard":                    "Отметить точку
>> на доске",
>>
>> // Controls at the info dialog
>>     "Click to select other element":                      "Нажмите для
>> выбора следующего элемента",
>>     "Hide":                                               "Скрыть",
>>     "Click to hide element":                              "Нажмите, чтобы
>> скрыть элемент",
>>     "Trace":                                              "След",
>>     "Color":                                              "Цвет",
>>     "Click to select color":                              "Нажмите для
>> выбора цвета",
>>     "JSON code for drawing":                              "JSON-код для
>> рисунка",
>>
>> // Element Labels in the info dialog
>>     "ClipArt does not exist":                             "Картинка
>> отсутствует",
>>     "ClipArt from [{$label}]":                            "Картинка,
>> источник {$label}",
>>     "Point does not exist":                               "Точка не
>> сушествует",
>>     "Point: [{$x},{$y}]":                                 "Точка
>> [{$x},{$y}]",
>>     "Line does not exist":                                "Линия не
>> существует",
>>     "Line [{$fromx},{$fromy}] - [{$tox},{$toy}]":         "Линия от
>> [{$fromx},{$fromy}] до [{$tox},{$toy}]",
>>     "Circle does not exist":                              "Окружность не
>> существует",
>>     "Circle [{$x},{$y}] -> {$r}":                         "Окружность
>> [{$x},{$y}] -> {$r}",
>>     "Curve does not exists":                              "Кривая не
>> существует",
>>     "Rectangle does not exist":                           "Прямоугольник
>> не существует",
>>     "Text does not exist":                                "Текст не
>> существует",
>>     "Text [{$label}]":                                    "Текст
>> [{$label}]",
>>     "Underline does not exists":                          "Выделение не
>> существует",
>>     "Underline":                                          "Выделение",
>>     "Arrow does not exists":                              "Стрелка не
>> существует",
>>     "Arrow":                                              "Стрелка",
>>     "Pointer does not exists":                            "Указатель не
>> существует",
>>     "Pointer [{$x},{$y}]":                                     "Указатель
>> на [{$x},{$y}]",
>>
>> // Messages
>>     "This browser doesn''t support graphics. Please use another web
>> browser.":
>>         "Ваш браузер не поддерживает графику. Пожалуйста, используйте
>> другой браузер"
>> };
>>
>> goog.getMsg = function(str, opt_values) {
>>
>>     console.log("--------------------------------------");
>>     console.log(goog.LOCALE);
>>     var translation = window[goog.LOCALE] || {};
>>     console.log(translation);
>>     console.log("######################################");
>>     str = translation[str] || str;
>>     var values = opt_values || {};
>>     for (var key in values) {
>>         var value = ('' + values[key]).replace(/\$/g, '$$$$');
>>         str = str.replace(new RegExp('\\{\\$' + key + '\\}', 'gi'),
>> value);
>>     }
>>     return str;
>> };
>>
>>
>> On Sun, Sep 22, 2013 at 12:48 AM, Bogdanov Andrey 
>> <ba...@mail.ru<https://e.mail.ru/sentmsg?mailto=mailto%3aba...@mail.ru>
>> > wrote:
>>
>> Hi Andun,
>>
>> Unfortunately I didn't find good solution for the issue. I made some hack
>> which allows to fix it right now but I think it requires other approach.
>> Now you could get the latest version from github and use the next code:
>>
>> <script>
>> current_LOCALE = 'ru';
>>
>> </script>
>> <script src="translate.js"></script>
>> <script src="whiteboard.js"></script>
>>
>>
>> It seems goog.getMsg approach works when locale set at  "compilation"
>> time, but didn't work when locale set in runtime after compilation.
>> I will think on the problem and try to find better solution and will be
>> gratefull if somebody has any suggestions.
>>
>> Regards,
>> Andrey Bogdanov
>>
>>
>> Суббота, 21 сентября 2013, 22:56 +05:30 от Andun Sameera <
>> andun...@gmail.com<https://e.mail.ru/sentmsg?mailto=mailto%3aandun...@gmail.com>
>> >:
>>
>>   Hi Andrey,
>>
>> I tried to add your translate.js base logic to whiteboard. The thing is
>> when I add the dependency to translate.js, it gives following error.
>>
>> ReferenceError: goog is not defined
>> [Break On This Error]
>>
>> goog.provide('bay.whiteboard.translation');
>>
>> When I looked at your
>> https://github.com/bay73/whiteboard/blob/master/src/index_t.htmlimplementation,
>>  I found that there is a special dependency to,
>>
>> <script src="../../closure-library/closure/goog/base.js"></script>
>>
>> solve the problem. AFAIK in the OM whiteboard code we cant add all these
>> Closure dependencies. So what is the resolution to this issue?
>>
>> Quick help will be highly appropriated since I have to finish this before
>> day after tomorrow!
>>
>> Thanks!
>>
>>
>>
>>
>>
>> On Wed, Sep 18, 2013 at 9:43 PM, Andun Sameera 
>> <andun...@gmail.com<https://e.mail.ru/sentmsg?mailto=mailto%3aandun...@gmail.com>
>> > wrote:
>>
>> Here is another suggestion which came from Closure forum.
>>
>> "In Chrome apps and extensions, localization is done at runtime using
>> chrome.i18n.getMessage() -- you pass it a message id and Chrome pulls the
>> correct translation from the messages.json file for the user's current
>> locale. http://developer.chrome.com/apps/i18n.html has all the details.
>>
>> I assume you're not writing a Chrome extension, but I bring it up because
>> we added pass to the JS compiler, which is activated by the
>> --replace_messages_with_
>> chrome_i18n flag, to replace goog.getMsg() calls with
>> chrome.i18n.getMessage() calls. You could probably hack together another
>> compiler pass to do something similar, along the lines of what Ilia Mirkin
>> suggested, if you were in the mood to hack on the Closure Compiler. I'm not
>> sure if there are any good "How to write a new pass for the Closure
>> Compiler" tutorials around, but hopefully you can find one or just follow
>> the example of the existing ones."
>>
>> I am looking in to feasible solution! Comment needed to find a good
>> approach!
>>
>> Thanks!
>>
>>
>>
>> On Fri, Sep 6, 2013 at 11:56 AM, Andun Sameera 
>> <andun...@gmail.com<https://e.mail.ru/sentmsg?mailto=mailto%3aandun...@gmail.com>
>> > wrote:
>>
>> I got your point! We can add these kind of arrays to add many languages.
>> But in OM we are using files to give the localized words like this. Using
>> keys to load values,
>>
>> <input type="submit" value="" wicket:id="ajax-cancel-button"
>> wicket:ommessage="title:157" />
>>
>> I think Maxim can give me a clue to load suitable values from those file
>> to this javascript arrays(
>> https://github.com/bay73/whiteboard/blob/master/src/translate.js)!
>>
>> Thanks!
>>
>>
>> On Fri, Sep 6, 2013 at 11:43 AM, Bogdanov Andrey 
>> <ba...@mail.ru<https://e.mail.ru/sentmsg?mailto=mailto%3aba...@mail.ru>
>> > wrote:
>>
>> Yes, you are righ - documentation about this topic is very poor.
>>
>> Now I've made some translation to Russian - you could see translate.js
>> script which I've commited to the https://github.com/bay73/whiteboard.git
>> .
>> This is simple dictionary - any language could be added there.
>>
>> Now I could set locale like this:
>>
>> <script>
>> goog.LOCALE = 'ru';
>> </script>
>> <script src="translate.js"></script>
>> <script src="whiteboard.js"></script>
>>
>> Regards,
>> Andrey Bogdanov
>>
>>
>> Пятница, 6 сентября 2013, 0:49 +05:30 от Andun Sameera <
>> andun...@gmail.com<https://e.mail.ru/sentmsg?mailto=mailto%3aandun...@gmail.com>
>> >:
>>
>>   I tried to find some material related to localization. But finding
>> help for Closure is a tough task. Cant we use a normal Javascript way to
>> handle run-time change of languages?
>>
>>
>> On Thu, Sep 5, 2013 at 6:19 PM, Bogdanov Andrey 
>> <ba...@mail.ru<https://e.mail.ru/sentmsg?mailto=mailto%3aba...@mail.ru>
>> > wrote:
>>
>> Hi Andun,
>>
>> I've push a version which allows to clear background.
>> You could call board.setBackground() or  board.setBackground('')  - it
>> will work
>>
>> Also I've surrounded all nessages with goog.getMsg call, so we could add
>> internationalization.
>>
>> Regards,
>> Andrey
>>
>>
>>
>>
>> Среда, 4 сентября 2013, 22:51 +05:30 от Andun Sameera 
>> <andun...@gmail.com<https://e.mail.ru/sentmsg?mailto=mailto%3aandun...@gmail.com>
>> >:
>>
>>   I have re-factored the code and committed. Also I have added undo for
>> DOC
>> addition, page navigation. Also there is another small problem which
>> Andrey
>> can answer me. How can we go to a empty background from? I tired to set a
>> "" as the url. But didn't work.
>>
>> Thanks!
>>
>>
>>
>>
>>
>>
>>
>> --
>> Regards
>> Andun S.L. Gunawardana
>> Undergraduate
>> Department of Computer Science And Engineering
>> University of Moratuwa
>> Sri Lanka
>>
>> Blog - http://www.insightforfuture.blogspot.com/
>> LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
>> Twitter -http://twitter.com/AndunSLG
>>
>>
>>
>>
>>
>>
>>
>> --
>> Андрей Богданов
>>
>>
>>
>>
>> --
>> Regards
>> Andun S.L. Gunawardana
>> Undergraduate
>> Department of Computer Science And Engineering
>> University of Moratuwa
>> Sri Lanka
>>
>> Blog - http://www.insightforfuture.blogspot.com/
>> LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
>> Twitter -http://twitter.com/AndunSLG
>>
>>
>>
>>
>>
>>
>>
>>
>> --
>> Regards
>> Andun S.L. Gunawardana
>> Undergraduate
>> Department of Computer Science And Engineering
>> University of Moratuwa
>> Sri Lanka
>>
>> Blog - http://www.insightforfuture.blogspot.com/
>> LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
>> Twitter -http://twitter.com/AndunSLG
>>
>>
>>
>>
>>
>>
>>
>>
>> --
>> Regards
>> Andun S.L. Gunawardana
>> Undergraduate
>> Department of Computer Science And Engineering
>> University of Moratuwa
>> Sri Lanka
>>
>> Blog - http://www.insightforfuture.blogspot.com/
>> LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
>> Twitter -http://twitter.com/AndunSLG
>>
>>
>>
>>
>>
>>
>>
>> --
>> Андрей Богданов
>>
>>
>>
>>
>> --
>> Regards
>> Andun S.L. Gunawardana
>> Undergraduate
>> Department of Computer Science And Engineering
>> University of Moratuwa
>> Sri Lanka
>>
>> Blog - http://www.insightforfuture.blogspot.com/
>> LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
>> Twitter -http://twitter.com/AndunSLG
>>
>>
>>
>>
>>
>>
>>
>> --
>> Андрей Богданов
>>
>>
>>
>>
>> --
>> Regards
>> Andun S.L. Gunawardana
>> Undergraduate
>> Department of Computer Science And Engineering
>> University of Moratuwa
>> Sri Lanka
>>
>> Blog - http://www.insightforfuture.blogspot.com/
>> LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
>> Twitter -http://twitter.com/AndunSLG
>>
>>
>>
>>
>>
>>
>>
>> --
>> Андрей Богданов
>>
>
>
>
> --
> Regards
> Andun S.L. Gunawardana
> Undergraduate
> Department of Computer Science And Engineering
> University of Moratuwa
> Sri Lanka
>
> Blog - http://www.insightforfuture.blogspot.com/
> LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
> Twitter -http://twitter.com/AndunSLG
>
>
>
>
>



-- 
Regards
Andun S.L. Gunawardana
Undergraduate
Department of Computer Science And Engineering
University of Moratuwa
Sri Lanka

Blog - http://www.insightforfuture.blogspot.com/
LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
Twitter -http://twitter.com/AndunSLG

Reply via email to