gpt4 book ai didi

java - JSP/Servlet 中的多语言支持

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:21:41 25 4
gpt4 key购买 nike

如何通过JSP/Servlet提供多语言支持?如何根据所选语言在运行时包含不同语言的静态数据?

最佳答案

在“普通”JSP/Servlet 应用程序中,最好的解决方案是 JSTL fmt taglib . (只需将 jstl-1.2.jar 放入 /WEB-INF/lib 中)如何使用它包含在 Oracle Java EE 5 tutorial part II chapter 7 中在这个答案中:How to internationalize a Java web application? .

如果您使用的是 MVC 框架,例如 Oracle JSF 或 Apache Struts,则需要使用关键字“国际化”(i18n) 或“本地化”(l10n) 来查阅其特定文档。在大多数情况下,他们还为此提供特定的标签,例如 <f:loadBundle>在 JSF 的情况下,这又包含在 Oracle Java EE 5 tutorial part II chapter 15 中.

那些 i18n 标签已经通过 ServletRequest#getLocale() 检查默认语言/地区(您不需要像之前建议的那样通过检查 header 来“低级别”地执行它——这将涉及更多的工作来根据 HTTP spec 解析 header )。您可以让用户自己选择语言(下拉菜单?)并将其存储在 session 范围内,并指示那些标签库使用它。这是 JSTL fmt taglib 的示例:

<fmt:setLocale value="${someSessionBean.locale}" />

..哪里${someSessionBean.locale}可以回en , en_US , en_UK等。这些又被 java.util.ResourceBundle 使用。用于加载本地化文本的 API(您不需要创建/加载 ResourceBundle 本身,标签库已经这样做了,只需阅读链接的 javadoc 以了解更多有关其工作原理的信息)。

如果您希望语言作为 URL 的第一个路径信息部分可用(例如 http://example.com/en/ ,这最适合 SEO),那么您最好使用 Filter为此监听 /* ,检查路径信息,从中分离语言部分,将其存储/与 session 值进行比较,并将路径信息中没有语言部分的请求进一步转发到所需的前端 Controller 。

关于java - JSP/Servlet 中的多语言支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2182370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com