当ACS commons错误页面处理程序包含错误页面时,i18n转换不起作用

时间:2014-12-02 12:00:07

标签: adobe cq5 aem

error page handler包含 errorPages 属性指定的错误页面的响应时,错误页面的i18n部分无效。

直接请求错误页面时,翻译工作正常。但是,当includeUsingGET方法

包含错误页面的响应时,它无法获取任何值并返回到密钥

示例:

com.day.cq.i18n.I18n i18n = new com.day.cq.i18n.I18n(slingRequest.getResourceBundle(currentPage.getLanguage(false))); String translatedValue = i18n.get("key"); out.write(translatedValue);

  1. 使用get请求错误页面直接访问时输出 - > translatedValue

  2. 在404上错误页面包含errorpagehandler 时的输出 - >键

  3. 两种情况下currentPage.getLanguage(false).getLanguage()的值都相同。

    注意:我已经在github上为此创建了一个issue,在这里提出一个问题,因为stackoverflow有更多的受众。

4 个答案:

答案 0 :(得分:3)

请尝试添加config /apps/sling/config/org.apache.sling.i18n.impl.I18NFilter.xml。

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
   jcr:primaryType="sling:OsgiConfig"
   service.ranking="-10000"
   sling.filter.scope="[REQUEST,ERROR]"/>

您也可以在“Adobe Experience Manager Web控制台”中执行此配置 配置“(http://example.com:4502/system/console/configMgr)。

答案 1 :(得分:1)

至少在5.5版本中,我们遇到了导致错误页面加载的任何页面的问题。我们没有找到一个好的解决方案。这超出了ACS commons错误页面,似乎是CQ5内部的一个问题。

您可能需要编写自己的代码来加载吊索请求的捆绑包OUTSIDE。我建议为此编写自己的OSGI服务并调用它而不是slingRequest.getResourceBundle()方法。

答案 2 :(得分:1)

只需编辑你的org.apache.sling.i18n.impl.I18NFilter.config,添加以下行(不含空格):

sling.filter.scope=["REQUEST","ERROR"]

答案 3 :(得分:0)

正如Rampant所说,它是应用程序的Bug,与ACS-commons错误页面处理程序无关。该错误发生在Sling(link)中,i18n过滤器加载了正确的resourceBundle未针对错误范围触发。该问题已在r1430633中得到纠正。看起来这个修复还没有进入5.6.1。可以在https://forums.adobe.com/message/5012581找到处理它的解决方法。