Я просто хотел узнать, на каком языке читаются сообщения messages.properties по умолчанию.
я подумал, что это в сконфигурированном по умолчанию face-config.xml локали:
<locale-config>
<default-locale>de</default-locale>
<supported-locale>de</supported-locale>
<supported-locale>en</supported-locale>
</locale-config>
он не содержит тега <message-bundle>
, я создал messages.properties, messages_en.свойства и messages_de.properties.Для доступа к значениям я использую этот код
ResourceBundle resourceBundle = SeamResourceBundle.getBundle();
String bundleMessage = resourceBundle.getString("key.something");
В меню я использовал это, чтобы показать (и переключить) язык, который работает отлично
<h:selectOneMenu value="#{localeSelector.localeString}">
<f:selectItems value="#{localeSelector.supportedLocales}"/>
</h:selectOneMenu>
Теперь не имеет значения, чтоЯзык, который я выбираю, je всегда использует messages.properties, а не _de или _en.Нужен ли конкретный класс для <message-bundle>
, чтобы найти также пакеты ресурсов _de и _en?
РЕДАКТИРОВАТЬ:
ResourceBundle resourceBundle = SeamResourceBundle.getBundle();
java.util.Locale locale = resourceBundle.getLocale();
Содержит всегда правильную локаль de или en, но всегда использует messages.properties и, если этот файл удален, возвращает только ключ, как если быон не нашел другого файла.Сообщения * .properties находятся в папке / WEB-INF / classes.
я пытался теперь взять Map<String, String> messages = org.jboss.seam.international.Messages.instance();
Он также содержит значения из messages.properties, а не _de или _en
Использование #{messages[key.label]}
в файле * .xhtml также возвращает только сообщения.значения свойств, но не из _de или _en.
Но свойства messages_de или _en непосредственно в файле xyz.war с <a4j:loadBundle var="i18n" basename="messages"/>
работают.(вот как я сделал i18n во внешнем интерфейсе "не Java")
еще две попытки всегда возвращают только свойства по умолчанию, а не _de или _en
resourceBundle = context.getApplication().getResourceBundle(context, "messages");
java.util.Locale locale = new java.util.Locale("de");
resourceBundle = ResourceBundle.getBundle("messages",locale);
, если я создаю новое messages2_de.properties и * _en * и используйте код выше, все работает отлично.
java.util.Locale locale = new java.util.Locale("de");
resourceBundle = ResourceBundle.getBundle("messages2",locale);