当前位置 : 主页 > 编程语言 > java >

jsp – 用于国际化和本地化的JSTL资源包

来源:互联网 收集:自由互联 发布时间:2021-06-25
我们有一个应用程序,使用基本的JSP / servlet,所有当前英文的文本都是在JSP页面中硬编码的.我们正在考虑我们的应用程序的国际化,所以我们需要某种方式将文本提取到属性文件中. 这是我
我们有一个应用程序,使用基本的JSP / servlet,所有当前英文的文本都是在JSP页面中硬编码的.我们正在考虑我们的应用程序的国际化,所以我们需要某种方式将文本提取到属性文件中.

这是我迄今为止所做的:
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&gt ;.或者我可以通过一个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

网友评论