如何加载特定于组件的资源包进行翻译?

时间:2014-08-18 22:10:09

标签: java jsp internationalization aem

我按照此页面上的说明(http://docs.adobe.com/docs/en/cq/current/developing/cq5-translator.html)尝试让我的组件访问可翻译的字符串包。我按照这些说明(http://www.wemblog.com/2011/12/how-to-use-multi-language-translation.html)来设置组件的JSP文件以使用翻译的字符串。但是,它不起作用;始终使用默认值。我不知道它从哪里拉资源包,但我希望它从我直接在组件节点下创建的i18n文件夹中提取。我有什么想法吗?

相关的JSP代码:

<cq:setContentBundle language="se" source="static" /><%
Locale pageLocale = currentPage.getLanguage(false); 
ResourceBundle resourceBundle = slingRequest.getResourceBundle("hello-world-strings", pageLocale);
    I18n i18n = new I18n(resourceBundle);
%>

<div style="margin:1em;padding:.8em;box-shadow:inset 0px 0px .5em #ddd;border:solid 1px #aaa;">
    <h1>Translation Testing Output</h1>
    OUT: <%= i18n.get("name") %>
</div>

1 个答案:

答案 0 :(得分:0)

在CQ的翻译器中添加评论会更改密钥。要进行调试,请尝试将密钥吐出:

<%= slingRequest.getResourceBundle(slingRequest.getLocale()).keySet()%><br>

如果您在列表中看到具有意外双括号的键,那么这些是翻译者注释。如果是这种情况,您可能无法收到消息,因为密钥不是您认为应该是的。 尝试删除评论。您无法在翻译器中执行此操作,但您可以使用crxde之类的工具直接编辑sling:key属性。