2015-08-05 2 views
1

У нас есть приложение vaadin и пользовательский виджет gwt, входящий в состав внешней банки. Виджет имеет свои собственные переводы (польский и английский). Проблема заключается в том, что при запуске пользовательского виджета во внешнем приложении он правильно переводит, но когда он находится внутри приложения vaadin, независимо от языка приложения (и даже браузера) - он доступен только на английском языке.Vaadin и пользовательский виджет Gwt - язык установки для виджета

Вопрос в том, как пользовательские виджеты gwt получают информацию об используемом языке и есть ли возможность переопределить это (форсировать язык/язык виджета)?

+0

Вы можете предоставить ссылку на этот виджет? Это публично? Вы пробовали метод setLocale для компонента? – kukis

+0

К сожалению, я не могу опубликовать этот виджет. Я попытался использовать метод setLocale для компонента vaadin, окружающего этот виджет, но это не помогло. Проблема заключается в том, что, где vaadin locale - метод на стороне сервера, он может изменять данные, отправленные клиенту. Виджеты GWT, о которых мы говорим, похожи на полное приложение gwt, помещенное внутри компонента vaadin. Когда он публикуется как отдельный веб-сайт, он принимает переводы из локали (параметр по умолчанию или GET). Когда вы видите виджет vaadin, он вообще не заботится о языковой среде браузера, запросе языкового тега или параметре GET. – Invader92

ответ

0

Одной из проблем было несоответствие имени локали. Там, где приложение vaadin могло быть переведено для языковой метки языка. например «pl» (польский), виджет gwt нужен локали с кодом страны, например. «pl_PL» (польский, Польша).

Фактическое решение было заставить GWT искать локали только мета-тегов и создать этот тег

<meta name="gwt:property" content="locale=x_X" /> 

на стороне сервера, уважая язык приложения и до того, как GWT JavaScripts прилагаются. К сожалению, это приводит к обновлению страницы после изменения языка, но я думаю, что это невозможно сделать другим способом из-за методов интернализации gwt.