我正在尝试在JSF中本地化图像,我希望用户能够在我的网站上设置他们的区域设置。这是我打电话给
FacesContext.getCurrentInstance().getViewRoot().setLocale(_locale);
效果很好,但有一个例外:
<h:graphicImage library="images" name="pic.gif" />
使用浏览器请求中发送的Accept-Language
来确定要使用的区域设置。我可以通过在每个.properties
文件中放置一个区域设置字符串并通过
<h:graphicImage library="#{resource.locale}/images" name="pic.gif" />
但是单个图像没有后退,因此我必须在每个区域设置的目录中拥有每个图像的副本,无论它是否不同。这非常麻烦,因为我支持9个语言环境,将来可能会支持更多语言环境。任何建议都将不胜感激。
答案 0 :(得分:2)
有趣的问题。但是,没有内置的支持,不是JSF,也不是Java EE的残余。你最好的办法是创建一个Servlet
来了解后备语言环境,从而基本上做了以下测试:
if (getServletContext().getResource(request.getPathInfo()) == null) {
// Display fallback image instead.
}
你最终可以通过自定义的JSF组件执行此操作,该组件执行相同的检查。