В GWT один обычно загружает i18n строки, используя интерфейс, как это:Загрузка GWT сообщений из базы данных
public interface StatusMessage extends Messages {
String error(String username);
:
}
, который затем загружает фактические строки из StatusMessage.property файла:
error=User: {0} does not have access to resource
Это отличное решение, однако мой клиент не может претендовать на то, чтобы поместить строки i18n в базу данных, чтобы их можно было изменить во время выполнения (хотя это не требование, чтобы они были изменены в реальном времени).
Одним из решений является создание службы асинхронной, который принимает идентификатор сообщения и пользователя локали и возвращает строку. Я реализовал это и нахожу его ужасно уродливым (он вводит огромное количество дополнительной связи с сервером, а также делает замену замены заполнителя довольно сложной).
Итак, мой вопрос в том, могу ли я в славном способе реализовать пользовательский поставщик сообщений, который загружает сообщения из бэкэнд одним крупным махом (для текущего сеанса пользователя). Если он также может подключиться к механизму сообщений GWT по умолчанию, тогда я был бы полностью доволен (т. Е. Я мог бы создать интерфейс, как указано выше, и продолжать использовать приятный {0}, {1} ... формат замены собственности) ,
Другие предложения по чистым сообщениям, управляемым базой данных в GWT, также приветствуются.
+1 Это довольно хорошая идея. Идея состоит в том, что вы распечатываете карту JSON, такую как 'var dict = {'key': 'value'}' в HTML-странице хоста, затем в своем коде GWT вызовите 'Dictionary dict = Dictionary.getDictionary (" dict "); 'для получения объекта, подобного карте, в вашем коде GWT. –
Как работает приложение, над которым я работаю в настоящий момент, это похоже на поведение, основанное на методе «одного маха», которое упоминается Ларсом, поскольку есть одна страница хоста, поэтому все сообщения (в том числе, в случае с Ларсом) сохраняться и извлекаться вместе в одном файле. –