ResourceBundle не работает в AEM 6.2
Следуя приведенной здесь документации, я пытаюсь заставить i18n работать с моим экземпляром AEM 6.2:
Locale pageLang = currentPage.getLanguage(false);
ResourceBundle resourceBundle = slingRequest.getResourceBundle(pageLang);
I18n i18n = new I18n(resourceBundle);
Проблема в том, что я всегда получаю org.apache.sling.engine.impl.helper.NullResourceBundle
который кажется просто пустым запасным пакетом, если ничего не было найдено. Я пытался предварительно загрузить пакеты в конфигурации OSGi, но безрезультатно.
Даже если мои собственные переводы не будут работать, по крайней мере, они должны содержать предопределенные переводы, поставляемые с продуктом. Несмотря на то, что мое собственное приложение появилось в инструменте: http://localhost:4502/libs/cq/i18n/translator.html
Любые идеи, почему я не получаю действительный пакет ресурсов?
РЕДАКТИРОВАТЬ: я сделал простой тест JSP и там он работает, так что это связано с Sling Models, где код находится в пределах @PostConstruct
метод, в котором модель была адаптирована из SlingHttpServletRequest
1 ответ
С помощью списка рассылки http://wcm.io/ и фрагмента из его кода я смог заставить это работать:
Locale pageLang = currentPage.getLanguage(false);
SlingHttpServletRequest request = slingRequest;
SlingBindings bindings = (SlingBindings)slingRequest.getAttribute(SlingBindings.class.getName());
if (bindings != null) {
request = bindings.getRequest();
}
ResourceBundle resourceBundle = request.getResourceBundle(pageLang );
Кажется, что введенный запрос в SlingModels - это не реальный запрос, а просто оболочка, которая не содержит ResourceBundle
, Я тогда попробовал @AemObject
из wcm.io, который также не работал для меня, а затем я спросил в списке рассылки, в чем может быть проблема.