这是我迄今为止所做的:
1)创建一个名为XXXXX-messages_en.properties的文件,将键/值对添加到属性文件中,例如AAAAA = Hello World
2)将JSTL相关的taglib加载到JSP页面
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
3)用以前的文本替换
<fmt:message key="AAAAA" bundle="${XXXXX}"/>
4)将setBundle标签添加到JSP页面中:
<fmt:setBundle basename="XXXXX-messages" var="XXXXX"/>
并重新启动服务器,一切正常显示.
但是,关于JSTL国际化图书馆使用的问题是:
问题1)看来我必须添加< fmt:setBundle>标记到每个单独的JSP页面中,这是一个有点丑陋,如果有什么需要改变(名称更改?),这将使生活更困难.
我想过可能我可以创建一个单独的页面,并把这个< fmt:setBundle>在其中,然后使用< jsp:include> ;.或者我可以通过一个servlet过滤器注入?我会说我对这两种选择都不满意. 有没有推荐的方法呢? 问题2)如果没有匹配属性文件,如何指定默认语言?我已经测试了我的情况,如果我把< fmt:setLocale>使用法语进入JSP页面,页面仍然可以正确加载.这是否意味着英文版总是默认的,还是因为我的操作系统/浏览器是英文?
如果中文/日文用户打开我的页面,并且我有英文和法文属性文件,会发生什么?
您可以使用后备区域来解决您的第二个问题:If no match is found, the formatting action looks for the so-called fallback-locale configuration setting. A configuration setting is a value set either by a context parameter in the application’s web.xml file or by a JSTL action or Java code in one of the JSP scopes. To set the fallback locale in the web.xml file, include these elements:
<context-param> <param-name>javax.servlet.jsp.jstl.fmt.fallbackLocale</param-name> <param-value>en</param-value> </context-param>
http://onjava.com/onjava/2002/09/11/jstl2.html