Struts2 i18n в классе Java

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

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


person user829237    schedule 09.08.2011    source источник


Ответы (3)


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);
}

Что-то вроде этого будет читать ваш пакет ресурсов

person Umesh Awasthi    schedule 09.08.2011

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

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

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

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

person Steven Benitez    schedule 09.08.2011

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

person Sathwick    schedule 09.08.2011
comment
Спасибо за ваш быстрый ответ. У вас есть краткий пример кода о том, как это сделать? - person user829237; 09.08.2011