У меня есть веб-приложение Struts2, которое использует файл свойств i18n для локализации. Метод getText отлично работает в jsp и в классе действий getText("some.identifier").
Но как я могу использовать его в java-классах, которые не являются классом действий? Другими словами, классы, у которых нет доступа к методу getText.
Ответ 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 является локальным потоком, поэтому, если вы попытаетесь вызвать его из другого потока, отличного от того, который обрабатывает запрос, вы столкнетесь с ошибкой.
Перегруженная форма метода принимает массив объектов в качестве третьего параметра, если вам нужно передать аргументы локализованному сообщению.