1

按照此处的文档,我试图让 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

4

1 回答 1

3

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 的方法,这对我也不起作用,然后我在邮件列表中询问可能是什么问题。

于 2016-12-16T12:33:57.093 回答