Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Struts2 i18n в классе Java

Автор вопроса: user829237Ответов: 3

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

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

javainternationalizationstruts2

Ответы

Ответ 1 · рейтинг 4 · Umesh Awasthi

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

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

Ответ 2 · рейтинг 4 · Steven Benitez

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

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

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

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

Ответ 3 · рейтинг 2 · Sathwick

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы