国际化(Internationalization)是实现应用的全球发布前的准备工作。应用必须能处理不同的语言、日期格式、数字和货币格式,以及其他的本地风格。
本地化(Localization)是指对一个支持国际化的应用做适当的调整,以便用于一个特定区域或地区。为此不可避免地需要翻译所有文本消息,还要定制日期、数字和货币格式,可能还需要完成其他必要的定制。
Web应用的国际化和本地化需求存在很大的差异,这取决于特定应用在什么环境发布和部署:
q 如果创建一个只在一处(如部门计算机)使用的Web应用,可能根本没有国际化需求。
q 如果同一个应用可能要由世界上不同地区的用户来访问,就需要针对每个访问请求进行本地化。
Java 2平台支持一个称为本地化环境(locale)的国际化概念,它表示具有一组特定的本地化特性的一种语言和一个国家/地区。以下几点需要注意:
q 最可靠的方法是明确地要求用户指定他们希望使用的本地化环境。
q 可以用浏览器请求中的HTTP Accept-Languages首部指定的首选本地化环境来确定用户的本地化环境,不过这个方法不太可靠,因为这依赖于用户特定的浏览器和操作系统设置。
q 可以在用户会话中保存本地化环境,或者使用隐藏表单字段将本地化环境从一个请求传递到另一个请求。
要对一个应用本地化,用户界面中的任何文本都必须翻译为本地化环境的语言。可能要做以下工作:
q 维护多组已翻译的JSP页面,并在用户选择不同本地化环境时从中选择一组JSP页面。为此,要为所支持的每种语言分别建立一组重复的页面。
q 利用Java 2平台的资源包,按照当前选择的本地化环境获取不同的文本串。为实现这个技术,可以使用JSTL标记<fmt:setLocale>、<fmt:message>和<fmt:bundle>。
选择一个特定的本地化环境还会影响Java运行时显示的日期、数字和货币。通过使用<fmt:timeZone>、<fmt:formatNumber>和<fmt:formatDate>等JSTL格式化动作,可以对JSP应用中显示的不同格式有细粒度的控制。
除了JSTL标记库,还有一些机制支持Web应用中的国际化。在第6章和第13章中,我们将通过实例了解Struts对国际化的支持。







