JSF2 中的图像 i18n

发布于 2024-10-14 13:22:21 字数 591 浏览 0 评论 0原文

我正在尝试本地化 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 个语言环境,并且将来可能会支持更多语言环境,这相当麻烦。任何建议将不胜感激。

I am trying to localize images in JSF, and I want the user to be able to set their locale on my site. This I am doing by a call to

FacesContext.getCurrentInstance().getViewRoot().setLocale(_locale);

which works great, with one exception:

<h:graphicImage library="images" name="pic.gif" />

uses the Accept-Language sent in the browser's request to determine which locale to use. I can work around this by placing a locale string in each .properties file and referencing images by

<h:graphicImage library="#{resource.locale}/images" name="pic.gif" />

but then there is no fall-back for individual images, so I have to have a copy of every image, whether it is different or not, in every locale's directory. This is quite cumbersome, given that I support 9 locales and probably more in the future. Any advice would be much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流绪微梦 2024-10-21 13:22:21

有趣的问题。然而,JSF 和 Java EE 的残余都没有对此提供内置支持。最好的选择是创建一个了解后备语言环境的 Servlet,从而基本上执行以下测试:

if (getServletContext().getResource(request.getPathInfo()) == null) {
    // Display fallback image instead.
}

您最终可以通过执行相同检查的自定义 JSF 组件来执行此操作。

Interesting issue. There is however no builtin support for this, not by JSF nor by remnant of Java EE. Your best bet is to create a Servlet which knows about the fallback locale and thus basically does the following test:

if (getServletContext().getResource(request.getPathInfo()) == null) {
    // Display fallback image instead.
}

You could eventually do this by a custom JSF component which does the same check.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文