JSF国际化
文章分类:JavaEye
JSF的国际化(Internnationalization)信息处理是基于Java对国际化的支援,
您可以在一个信息资源档中统一管理信息资源,资源文件的名称是.properties,
而內容是名称与值的配对,例如:
messages.properties
titleText=JSF Demo
hintText=Please input your name and password
nameText=name
passText=password
commandText=Submit
资源档名称由basename加上语言与地区来组成,例如:
basename.properties
basename_en.properties
basename_zh_TW.properties
沒有指定语言与地区的basename是预设的资源档名称,JSF会根据浏览器送來的Accept-Language header中的內容来決定该使用哪一个资源档名称,例如:
Accept-Language: zh_TW, en-US, en
如果浏览器送来这些header,则预设会使用繁体中文,接著是美式英文,再来是英文语系,如果找不到对应的信息资源档,则会使用预设的信息资源档。
由于信息资源档必須是ISO-8859-1编码,所以对于非西方语系的处理,必须先将之转换为Java Unicode Escape格式,例如您可以先在信息资源档中写下以下的內容:
messages_zh_TW.txt
titleText=JSF示範
hintText=請輸入名稱與密碼
nameText=名稱
passText=密碼
commandText=送出
然后使用JDK的工具程式native2ascii来转换,例如:
native2ascii -encoding Big5 messages_zh_TW.txt messages_zh_TW.properties
转换后的內容会如下:
messages_zh_TW.properties
titleText=JSFu793au7bc4
hintText=u8acbu8f38u5165u540du7a31u8207u5bc6u78bc
nameText=u540du7a31
passText=u5bc6u78bc
commandText=u9001u51fa
(所有资源文件放入你的JFS应用的WEB-INF/classes目录下)
接下来您可以使用<f:loadBundle>标记來指定载入信息资源,一个例子如下:
index.jsp
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@page contentType="text/html;charset=UTF8"%>
<f:view>
<f:loadBundle basename="messages" var="msgs"/>
<html>
<head>
<title><h:outputText value="#{msgs.titleText}"/></title>
</head>
<body>
<h:form>
<h3><h:outputText value="#{msgs.hintText}"/></h3>
<h:outputText value="#{msgs.nameText}"/>:
<h:inputText value="#{user.name}"/><p>
<h:outputText value="#{msgs.passText}"/>:
<h:inputSecret value="#{user.password}"/><p>
<h:commandButton value="#{msgs.commandText}"
actionListener="#{user.verify}"
action="#{user.outcome}"/>
</h:form>
</body>
</html>
</f:view>
如此一來,如果您的浏览器预设接受zh_TW语系的话,则页面上就可以显示中文,否則预设将以英文显示,也就是messages.properties的內容,为了能显示多国语系,我们设定网页编码为UTF8。
<f:view>可以设定locale属性,直接指定所要使用的语系,例如:
<f:view locale="zh_TW">
<f:loadBundle basename="messages" var="msgs"/>
直接指定以上的話,则会使用繁体中文来显示,JSF会根据<f:loadBundle>的basename属性加上<f: view>的locale属性來決定要使用哪一个信息资源档,就上例而言,就是使用messages_zh_TW.properties,如果设定 为以下的话,就会使用messages_en.properties:
<f:view locale="en">
<f:loadBundle basename="messages" var="msgs"/>
您也可以在faces-config.xml中设定语系,例如:
<faces-config>
<application>
<local-config>
<default-locale>en</default-locale>
<supported-locale>zh_TW</supported-locale>
</local-config>
</application>
.....
</faces-config>
在<local-config>一定有一个<default-locale>,而<supported-locale>可以有好几个,这告訴JSF您的应用程序支援哪些语系。
当然,如果您可以提供一个选项让使用者选择自己的语系会是更好的方式,例如根据user这个Bean的locale属性来决定页面语系:
<f:view locale="#{user.locale}">
<f:loadBundle basename="messages" var="msgs"/>
在页面中设定一个表单,可以让使用者选择语系,例如设定单选钮:
<h:selectOneRadio value="#{user.locale}">
<f:selectItem itemValue="zh_TW"
itemLabel="#{msgs.zh_TWText}"/>
<f:selectItem itemValue="en"
itemLabel="#{msgs.enText}"/>
</h:selectOneRadio>
FacesContext context = FacesContext.getCurrentInstance();
String bundleName = context.getApplication().getMessageBundle();
ResourceBundle messageBundle = ResourceBundle.getBundle(bundleName,context.getViewRoot().getLocale());
String prompt = messageBundle.getString(key);
转自:http://www.iteye.com/wiki/topic/734484
分享到:
相关推荐
在这个“JSF国际化范例”中,我们重点探讨如何在JSF应用中实现多语言支持,即国际化(i18n)。这是一项关键功能,因为它允许应用程序为不同地区的用户提供本地化的体验。 国际化通常涉及以下几个核心概念: 1. **...
一个例子:jsf国际化
在JavaScriptServer Faces (JSF) 2.x版本中,实现国际化是一项重要的功能,它使得应用程序能够根据用户所在的地区提供相应的语言支持。这篇文章将探讨如何在JSF 2中实现国际化,以便为全球用户提供更好的用户体验。 ...
在JavaScript Server Faces (JSF) 中,实现多语言国际化是一项重要的功能,它允许应用程序为不同地区的用户提供...这个过程涉及到资源文件的创建、配置文件的设置以及视图层的使用,是一个全面的 JSF 国际化实现示例。
当我们谈论"ADF(JSF)框架中使用国际化"时,我们指的是如何使应用程序能够支持多种语言,以便全球用户都能方便地使用。 在ADF和JSF中实现国际化通常涉及到以下几个关键步骤和知识点: 1. **资源bundle**:国际化...
5. **国际化支持**:JSF支持多语言,这在“JSF中文使用教程”中可能包含如何设置和使用中文资源的内容。 **学习JSF的关键概念**: 1. **Facelet**:Facelets是JSF的默认视图技术,用于创建和组织用户界面组件。 2. ...
国际化(i18n)和全球化(g11n)是软件开发中的关键概念,尤其在现代多语言互联网环境中。JSF提供了支持这两种功能的机制,使得开发者能够轻松地为不同地区的用户提供定制的用户体验。 1. **JSF框架概述** JSF是一...
在JSF(JavaServer Faces)1.2版本中,实现国际化是一项重要的功能,它使得应用程序能够根据用户所在的地区提供相应的语言环境。以下是对这个主题的详细讲解。 首先,我们需要了解JSF的基本概念。JSF是一种用于构建...
JSF提供了丰富的功能,包括表单处理、验证、国际化等,并通过一套强大的组件模型支持网页组件的创建与管理。本文档将详细介绍JSF中的一些核心标签及其使用方法。 #### 二、JSF页面配置与初始化 在使用JSF开发应用...
JSF(JavaServer Faces)框架是一个用于构建Web应用程序的组件模型框架,由Oracle公司维护,是Java ...通过这个基础,你可以进一步学习JSF的更高级特性,如数据绑定、事件处理、国际化等,以构建更复杂的Web应用程序。
JSF的核心目标包括创建GUI组件框架、定义组件状态管理、处理输入事件、提供通用组件库、实现事件处理、输入验证、国际化和可访问性支持,以及自动生成适应不同客户端的输出。这些目标使得JSF能够提供一套全面的工具...
在本章节中,我们将深入...同时,还会讲解如何实现国际化,包括资源包的创建和使用,以及在JSF应用中显示本地化文本的方法。通过学习这些内容,开发者可以更好地理解和利用JSF框架,创建支持多种语言的Web应用程序。
2. `[A101]JSF国际化.wrf`:这个文件的扩展名".wrf"不常见,但考虑到上下文,它可能是一个Web资源文件或者是一个录制的演示文件,展示了如何在JSF中实现国际化功能。在JSF中,国际化通常涉及到使用资源包(Resource ...
API提供了丰富的功能,如UI组件的表示、组件状态管理、事件处理、输入验证和国际化支持。而JSP标签库则让开发者可以在JSP页面中方便地使用这些功能,构建出复杂的用户界面。 在JSF中,导航规则是控制应用内页面跳转...
国际化与本地化 JSF 1.2支持资源包,允许开发者为不同地区和语言提供本地化的消息和标签。通过`<f:loadBundle>`标签,可以加载相应的资源文件。 ### 10. 整合其他技术 JSF 1.2能够很好地与其他Java EE技术(如...
标签:“jsf2 国际化 jpa 标签”这组标签概括了文档的主要内容和关键词,JSF2是文档的核心主题,国际化和JPA分别指明了项目的多语言支持和数据持久化的需求,而“标签”则涉及到在JSF项目中使用的各种标签库。...
9. **国际化与本地化** - 使用资源包(resource bundle)提供多语言支持。 10. **Ajax支持** - JSF 2.0及以后版本内置了Ajax支持,允许部分刷新,提高用户体验。 11. **JSF与其它技术集成** - 可以与CDI...
JSF框架通过使用资源包和特定的国际化标签,允许开发者轻松地为不同地区的用户提供本地化的内容。 8. JSFExpressionLanguage JSF表达式语言(EL)提供了一种表达式语法,用于访问和操作数据。EL简化了对 Managed ...
这个JAR文件包含Java Standard Tag Library(JSTL)1.2版本,它是一个用于JSP页面的标准标签库,提供了处理SQL查询、XML处理、国际化、条件逻辑等功能。JSTL与JSF结合使用,可以增强JSF应用的表达能力,使得开发者...