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);
使用get请求错误页面直接访问时输出 - > translatedValue
在404上错误页面
两种情况下currentPage.getLanguage(false).getLanguage()
的值都相同。
注意:我已经在github上为此创建了一个issue,在这里提出一个问题,因为stackoverflow有更多的受众。
答案 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找到处理它的解决方法。