Struts2 i18n в классе Java - PullRequest
       15

Struts2 i18n в классе Java

4 голосов
/ 09 августа 2011

У меня есть веб-приложение Struts2, которое использует файл свойств i18n для локализации. Метод getText отлично работает в jsp и в классе действий getText("some.identifier").

Но как я могу использовать его в java-классах, которые не являются action-классами? Другими словами, классы, которые не имеют доступа к методу getText.

Ответы [ 3 ]

4 голосов
/ 09 августа 2011
ResourceBundle labels =
    ResourceBundle.getBundle("MyBundle", currentLocale);
Enumeration bundleKeys = labels.getKeys();

while (bundleKeys.hasMoreElements()) {
    String key = (String)bundleKeys.nextElement();
    String value = labels.getString(key);
    System.out.println("key = " + key + ", " + 
               "value = " + value);
}

Примерно так будет читаться ваш пакет ресурсов

4 голосов
/ 09 августа 2011

На самом деле вам не нужно повторно загружать пакет. Вы можете использовать следующий код, чтобы вставить копию, загруженную Struts:

LocalizedTextUtil.findDefaultText(key, ActionContext.getContext().getLocale());

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

Перегруженная форма метода принимает массив объектов в качестве третьего параметра, если вам нужно передать аргументы в локализованное сообщение.

2 голосов
/ 09 августа 2011

Вы можете использовать ResourceBuldle, чтобы загрузить файл свойств и получить нужные свойства.

...