Локализация приложения GWT, созданного с помощью UiBinder, не работает в режиме хостинга - PullRequest
4 голосов
/ 09 ноября 2011

Работает ли локализация приложения GWT, созданного с помощью UiBinder, в режиме хостинга? Это не для меня. Вот что я сделал:

1) Добавлены свойства локали в XML-модуль GWT

< inherits name="com.google.gwt.i18n.I18N" / >
< extend-property name='locale' values='en'/>
< extend-property name='locale' values='ru'/>
< set-property-fallback name="locale" value="en"/>

2) Сообщения с тегами в * .ui.xml файлах с

< ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
     ui:generateFormat="com.google.gwt.i18n.rebind.format.PropertiesFormat"
     ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
     ui:generateLocales="default"
     xmlns:g="urn:import:com.google.gwt.user.client.ui">

  < g:HTMLPanel>
     < ui:msg description="Hello Description">Hello!< /ui:msg>  
  < /g:HTMLPanel>
< /ui:UiBinder>

3) Добавлена ​​опция компилятора GWT -extra

4) Скомпилировал проект. Найдены файлы с суффиксом .GenMessages.properties в дополнительной папке.

5) Локализованные сгенерированные сообщения. Скопировал каждый файл .GenMessages.properties в одну папку с соответствующим файлом .ui.xml. Переименовал его с моим языком в имени файла, например, .GenMessages_en.properties .GenMessages_ru.properties

6) Перекомпилировал проект.

7) Запустил приложение и изменил переменную локали в URL для проверки, например http://127.0.0.1:8888/TestLocale.html?gwt.codesvr=127.0.0.1:9997&locale=ru

По-прежнему отображается английская версия ресурсов по умолчанию.

Что мне не хватает? Как я могу даже отладить это? В логах или на выходе ничего нет.

Я под Windows, использую IntelliJ IDEA и Chrome в качестве браузера.

Спасибо!

Обновление: Это не сработало, потому что у меня были дополнительные < set-property name="locale" value="en"/ > в конфигурации модуля :( Возможно, это были переопределения значений из тега extend-property.

Я написал пошаговое описание, как заставить это работать здесь на случай, если кому-то будет интересно.

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

По умолчанию GWT генерирует файлы свойств, которые начинаются с имени пакета. Вы удалили пакет из имени файла?

Одна вещь, которая лучше всего работала для меня в моих проектах GWT, - это использование LocalizableResource_.properties в качестве имен файлов и хранение их в пакете com/google/gwt/i18n/client. Ознакомьтесь с документацией GWT по Локализация с помощью UiBinder

1 голос
/ 06 января 2013

Файл .properties не обязательно должен находиться в пакете клиента.Главное - убедиться, что где бы вы ни решили хранить файл свойств, убедитесь, что пакет, в котором он находится, также находится в пути вашего модуля.В моих проектах я обычно помещаю файлы свойств в пакет res:

com/project/gwt
com/project/gwt/client
com/project/gwt/res
com/project/gwt/res/strings

Затем основной интерфейс вместе со всеми отдельными файлами свойств для каждого языка заключаются в строки.Это прекрасно работает, если ваш файл module.xml содержит строку

<source path="res" />
...