Динамическое изменение языка портлета Vaadin - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть портлет Vaadin, который поддерживает «Многоязычность», что означает, что если пользователь выберет, например, DE на портале liferay, он получит перевод некоторых портлетов на немецкий язык, и если он выберет другой язык, портлет будет переведен на выбранный язык,возникает проблема: пользователь может перевести портлет только один раз, если он выберет другой язык, портлет сохранит переведенные строки предыдущего языка, а портлет сохранит старый язык до перезагрузки метода инициализации портлетов.Есть ли способ динамического изменения языка компонентов портлетов без потери текущего состояния пользователей (модификации)?

1 Ответ

0 голосов
/ 09 декабря 2011

Существует шаблон для перевода компонента Vaadin, который может применяться здесь:

  1. Создайте служебный метод для преобразования свойств заголовка и описания компонента Vaadin.Используйте ThreadLocal -pattern, чтобы сделать его похожим на статический метод, или используйте внедрение зависимостей, чтобы было проще вызывать его из любого места.
  2. В методе перевода сохраните оригинальный ключ перевода (идентификатор строки)to Component.setData ()
  3. При динамическом изменении языка вызовите метод для повторного перевода компонента, используя свойство Component.getData.Вы можете легко перебирать весь видимый пользовательский интерфейс, используя интерфейс ComponentContainer , начиная с окна.

Для хранения нескольких ключей перевода в свойстве data (для заголовка и описания отдельно)создайте свой собственный класс или используйте Map.

Также обратите внимание, что если у вас есть данные, поступающие из базы данных, этот шаблон не поможет, и вам придется решить эту проблему другим способом.

...