#gwt #internationalization #uibinder
#gwt #интернационализация #uibinder
Вопрос:
Я пытаюсь включить i18n для приложения GWT. Формы пользовательского интерфейса в этих приложениях описаны с помощью ui.xml файлы (с помощью UiBinder). Я прочитал это руководство http://code.google.com/intl/ru-RU/webtoolkit/doc/latest/DevGuideUiBinderI18n.html и был способен обрабатывать простые случаи, такие как < span >текст < /span>, который использовался как обычный html. Но я не могу решить, что мне делать с аргументами виджета, т.Е. < g:button text=»Save» /> Руководство предполагает вставить
<ui:attribute name="text" description="Save"/>
<ui:msg description="Save">Сохранить</ui:msg>
внутри тега виджета.
Это приемлемо для виджета button, но неприемлемо для пользовательского виджета, который реализует интерфейс HasOneWidget. Когда я пытаюсь вставить и внутри такого виджета, я получаю ошибку компиляции, когда компилятор видит более одного дочернего элемента внутри тега виджета. Есть ли какой-либо способ перевести атрибуты тега виджета надлежащим образом?
В качестве обходного пути я могу передать идентификатор вместо реального текста в качестве атрибута, а затем вызвать некоторые Messages.resolveById(«сохранить»), который вернет «Сохранить», но это требует гораздо больше изменений и работы, чем ожидалось.
Ответ №1:
Наконец я нашел решение: используйте <ui:with> тег для указания класса сообщения, а не просто вставляйте {} в атрибуты.