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

Reply via email to