`

JSF国际化

阅读更多

在应用中,可以在faces-config.xml中定义合适的Message Bundle和Resource Bundle,并支持多国语言。我们可以将程序中使用的Message内容定义在Message Bundle中,将Label、ShortDesc等内容定义在Resource Bundle中。Message Bundle中的内容可以使用Java代码进行读取,方便程序逻辑中Message的动态显示;Resource Bundle的内容可以直接使用EL表达式进行绑定。

 

1,Message Bundle和Resource Bundle的定义

1)定义Message的资源文件:UIStrings_en.properties、UIStrings_zh.properties。

UIStrings_en.properties:

database.connect.failure=The database connection could not be established. Please verify that the database is up, a data source jdbc/FODDS exists and that the username is provided as FOD

UIStrings_zh.properties

database.connect.failure=无法正常连接数据库

定义Label等使用的资源文件:StoreFrontUIBundle_en.properties、StoreFrontUIBundle_zh.properties。

StoreFrontUIBundle_en.properties:

global.nav.home=Home

StoreFrontUIBundle_zh.properties:

global.nav.home=主页面

 

为了让每个JSP页面都支持国际化需要在faces-config.xml文件中写入:

 

 

<application>
        <locale-config>
            <default-locale>en</default-locale>
            <supported-locale>en_US</supported-locale>
            <supported-locale>zh_CN</supported-locale>
        </locale-config>
        <resource-bundle>
		<base-name>com.asia.gecapital.cdbs.local.Messages</base-name>--//资源文件名
		<var>msgs</var>---//资源文件要在页面上引用时的缩写形式例如:  
 <h:outputText value="#{msgs.nameText}"/> 
	  </resource-bundle>
        <message-bundle>--//
            com.asia.gecapital.cdbs.jsf.Messages
        </message-bundle>
        <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
    </application>

 

Java中的国际化是由 java.util.Locale 类支持的,中文对应的代码是“zh”;我们要在JSF中使用中文的话,只要在 faces-config.xml 中加入对中文的支持,当然如果需要支持更多的语言的话,多加几个<supported-locale>就可以了。比如:<supported-locale>ja</supported-locale>

3)Locale的规则为:language:[_:country:[_:variant:]],language:[-:country:[-:variant:]]

完整的定义不包含:,例子:ja-JP-SJIS

 

2,使用Java代码读取Message Bundle内容

不同的语言在getBundle方法中会进行区分。

 

String alertMessage = BundleUtils.getStringFromBundle("database.connect.failure");  
  
public static String getStringFromBundle(String key) {  
    ResourceBundle bundle = getBundle();  
    return getStringSafely(bundle, key, null);  
}  
  
private static ResourceBundle getBundle() {  
    FacesContext ctx = getFacesContext();  
    UIViewRoot uiRoot = ctx.getViewRoot();  
    Locale locale = uiRoot.getLocale();  
    ClassLoader ldr = Thread.currentThread().getContextClassLoader();  
    return ResourceBundle.getBundle(ctx.getApplication().getMessageBundle(),   
                                    locale, ldr);  
}  
  
private static String getStringSafely(ResourceBundle bundle, String key,   
                                      String defaultValue) {  
    String resource = null;  
    try {  
        resource = bundle.getString(key);  
    } catch (MissingResourceException mrex) {  
        if (defaultValue != null) {  
            resource = defaultValue;  
        } else {  
            resource = NO_RESOURCE_FOUND + key;  
        }  
    }  
    return resource;  
}  

 

3,使用EL绑定Resource Bundle内容

可以使用#{res['global.nav.home']}或者#{res.global.nav.home}来引用global.nav.home。

 

 

分享到:
评论

相关推荐

    JSF国际化范例 源代码

    JSF国际化范例,源代码 JSF国际化范例,源代码 JSF国际化范例,源代码

    jsf国际化

    一个例子:jsf国际化

    JSF2中实现国际化

    NULL 博文链接:https://zhanghong.iteye.com/blog/852107

    jsf实现多语言国际化demo

    jsf实现多语言国际化demo

    JSF.rar_JSF_eclipse工程

    JSF国际化源代码,可加入eclipse工程使用.

    jsf框架和国际化

    jsf框架!国际化资源文件!全局化!本地化

    jsf常用文档datatable行样式,frameset及树型目录dtree,jsf滚动组件

    datatable行样式 frameset及树型目录dtree jsf滚动组件 jsf实现排序功能 jsf datetable行编辑的实现 jsf事件 jsf国际化 jsf验证与消息

    jsf简单的国际化(jsf1.2)

    jsf1.2的国际化例子,特殊简单,想学习的初学者可以看下。老鸟不用看。

    JSF学习用的PPT

    此PPT介绍了1、JSF预准备 2、 JSF开发环境搭建 3、JSF入门开发 4、 JSF事件处理机制 5、 JSF国际化 6 、JSF验证器 7、JSF的UI(标签库)

    第9章 JSF的托管Bean和国际化课件及源程序

    第9章 JSF的托管Bean和国际化课件及源程序 Java国际化实例 I18N_test managedBeanTest

    JSF教程 中文版

    部分内容截取: 1. 入门 1.1 简介JSF 1.2 第一个JSF程序 1.3简单的导航 Navigation 1.4导航规则设置 1.5 JSF Expression Language 1.6国际化信息 ......

    JSF基础教程 简体中文

    o 国际化讯息 Managed Beans JSF 使用 Bean 来达到逻辑层与表现层分离的目的,Bean 的管理集中在组态档案中,您只要修改组态档案,就可以修改 Bean 之间的相依关系。 o Backing Beans o Beans 的组态与设定 o Beans...

    整合jsf hibernate spring实例

    部门人员一对多的CRUD操作 hibernate: 管理实体关系映射 spring:数据源配置与获得session IOC依赖注入 和 AOP 事务管理 jsf : backing bean的操作 ... jsf 信息国际化以资源绑定 jsf 表单验证 jsf 导航设定

    JSF标签,JSF的使用

    JSF主要由两个部分组成:一套功能强大的API函数,用来表示UI组件、管理组件状态、处理事件、进行输入有效性验证,以及对国际化和可访问性的支持;一套包含各种页面元素的并允许自定义的JSP标签库,用来在JSP页面中...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版) 1/2

    《JavaServer Faces 2.0完全参考手册》对所有jsf功能都进行了解释,包括请求处理生命周期、托管bean、页面导航、组件开发、ajax、验证器、国际化和安全。贯穿全书的专家组意见提供了关于jsf设计的内部信息。 推荐...

    ADF(JSF)框架中使用国际化

    NULL 博文链接:https://redhacker.iteye.com/blog/1059967

    jsf2项目开发及所需各种标签集合

    支持jsf2,p标签,h标签,rich标签,f标签,国际化多语言支持,ajax,以及项目的完整搭建,异常处理机制,jpa的数据操作控制等

    jsf1.2+spring3.0+hibernate3.3例子-单表增删改查

    使用jsf1.2+spring3.0+hibernate3.3实现集成,利用annotation实现自动对象管理注入,用户表的登录增删改查操作,包括验证码ajax集成,消息机制,国际化处理,自定义转换器,自定义验证器等 qq:38732796 欢迎讨论

    JSF入门必看

    1.1 简介 JSF 1.2 第一个 JSF 程序 1.3 简单的导航 Navigation 1.4 导航规则设置 1.5 JSF Expression Language 1.6 国际化信息 2. Managed Beans

    JSF入门pdf

    1.6国际化信息 2. Managed Beans 2.1 Backing Beans 2.2 Beans的配置与设定 2.3 Beans上的List, Map 3. 数据转换与验证 3.1 标准转换器 3.2自定义转换器 3.3标准验证器 3.4自定义验证器 3.5错误信息处理 3.6 自定义...

Global site tag (gtag.js) - Google Analytics