ResourceBundle在AEM 6.2中不起作用

时间:2016-12-14 10:24:50

标签: aem resourcebundle sling-models

遵循文档here,我试图让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模型有关,其中代码位于@PostConstruct方法中,其中模型是从SlingHttpServletRequest

1 个答案:

答案 0 :(得分:2)

借助wcm.io邮件列表及其code的摘要,我能够实现这一目标:

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的包装器。然后我尝试了来自wcm.io的@AemObject,这对我来说也不起作用,然后我在邮件列表中询问了什么可能是问题。