Just some sharing about java open source and life

JSF国际化

日期:2010-05-01 13:26 | 作者:JavaChen | 分类目录:JSF
119 views

国际化的作用就是根据不同国家的用户在访问Web或其他类型的程序时,将各种信息以本地的常用形式显示出来,如界面信息在中国,就会显示中文信息,在以英文为主的国家里,就会显示英文信息。还有就是一些信息的格式,如日期格式等。从属性文件中获得字符串信息是国际化的基本应用。
JSF的国际化(Internnationalization)讯息处理是基于Java对国际化的支持,您可以在一个讯息资源文件中统一管理讯息资源,资源文件的名称是.properties,而内容是名称与值的配对,例如 :messages.properties

资源文件名称由名称加上语言与地区来组成,例如:
messages.properties
messages_en.properties
messages_zh_cn.properties

没有指定语言与地区的basename是预设的资源档名称,JSF会根据浏览器送来的Accept-Language header中的内容来决定该使用哪一个资源档名称,例如:
Accept-Language: zh_cn, en-US, en

如果浏览器送来这些header,则预设会使用繁体中文,接着是美式英文,再来是英文语系,如果找不到对应的讯息资源文件,则会使用预设的讯息资源文件。
由于讯息资源文件必须是ISO-8859-1编码,所以对于非西方语系的处理,必须先将之转换为Java Unicode Escape格式,利用JDK的工具程序native2ascii可以实现转换。

在写好资源文件后,接下来就可以在JSF页面加载资源文件了,在JSF中您可以使用卷标来指定加载讯息资源。

<%@ 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:form>
 </body>
 </html>
 </f:view>

如此一来,如果您的浏览器预设接受zh_cn语系的话,则页面上就可以显示中文,否则预设将以英文显示,也就是messages.properties的内容,为了能显示多国语系,我们设定网页编码为UTF8。
可以设定locale属性,所以你可以在页面直接指定所要使用的语系,例如:
<f:view locale=”en”>

当然,也可以在faces-config.xml中设定语系,例如:

<faces-config>
    <application>
        <local-config>
            <default-locale>en</default-locale>
            <supported-locale>zh_cn</supported-locale>
        </local-config>
    </application>

 .....
 </faces-config>

在一定有一个,而可以有好几个,这告诉JSF您的应用程序支持哪些语系。

作者:JavaChen | 分类目录:JSF | 标签:
回到顶部

无觅相关文章插件,快速提升流量