`

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应用中实现多语言支持,即国际化(i18n)。这是一项关键功能,因为它允许应用程序为不同地区的用户提供本地化的体验。 国际化通常涉及以下几个核心概念: 1. **...

    jsf国际化

    一个例子:jsf国际化

    JSF2中实现国际化

    在JavaScriptServer Faces (JSF) 2.x版本中,实现国际化是一项重要的功能,它使得应用程序能够根据用户所在的地区提供相应的语言支持。这篇文章将探讨如何在JSF 2中实现国际化,以便为全球用户提供更好的用户体验。 ...

    jsf实现多语言国际化demo

    在JavaScript Server Faces (JSF) 中,实现多语言国际化是一项重要的功能,它允许应用程序为不同地区的用户提供本地化的体验。JSF 提供了内置的支持来处理国际化,使得开发者能够轻松地根据用户的选择或浏览器设置来...

    JSF.rar_JSF_eclipse工程

    2. `[A101]JSF国际化.wrf`:这个文件的扩展名".wrf"不常见,但考虑到上下文,它可能是一个Web资源文件或者是一个录制的演示文件,展示了如何在JSF中实现国际化功能。在JSF中,国际化通常涉及到使用资源包(Resource ...

    JSF实战教程中文版.docx

    * JSF国际化和校验:JSF支持国际化和校验,能够适应不同语言和文化环境。 三、JSF与其他技术的关系 * JSF与HTTP、Servlet、Portlet、JavaBean、JSP的关系:JSF基于这些技术之上,提供了一个更高级的抽象层,使得...

    JSF学习用的PPT

    "JSF国际化"则关注如何使应用支持多语言。这部分会教授如何创建资源bundle文件,定义不同语言的文本,以及在JSF组件中使用这些资源来实现动态的国际化内容显示。 "JSF验证器"部分会介绍JSF内置的验证机制,如长度、...

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

    7. **JSF国际化**:JSF提供了`&lt;f:resources&gt;`和`&lt;f:loadBundle&gt;`标签来支持多语言。通过定义资源文件,开发者可以轻松地为不同地区提供本地化内容。 8. **JSF验证与消息**:JSF内置了强大的验证机制,通过`...

    jsf框架和国际化

    国际化(i18n)和全球化(g11n)是软件开发中的关键概念,尤其在现代多语言互联网环境中。JSF提供了支持这两种功能的机制,使得开发者能够轻松地为不同地区的用户提供定制的用户体验。 1. **JSF框架概述** JSF是一...

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

    在JSF(JavaServer Faces)1.2版本中,实现国际化是一项重要的功能,它使得应用程序能够根据用户所在的地区提供相应的语言环境。以下是对这个主题的详细讲解。 首先,我们需要了解JSF的基本概念。JSF是一种用于构建...

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

    当我们谈论"ADF(JSF)框架中使用国际化"时,我们指的是如何使应用程序能够支持多种语言,以便全球用户都能方便地使用。 在ADF和JSF中实现国际化通常涉及到以下几个关键步骤和知识点: 1. **资源bundle**:国际化...

    core jsf 1.2 jsf 核心

    国际化与本地化 JSF 1.2支持资源包,允许开发者为不同地区和语言提供本地化的消息和标签。通过`&lt;f:loadBundle&gt;`标签,可以加载相应的资源文件。 ### 10. 整合其他技术 JSF 1.2能够很好地与其他Java EE技术(如...

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

    在本章节中,我们将深入探讨JavaServer Faces (JSF) 中的托管Bean(Managed Beans)以及如何实现国际化(Internationalization,通常简写为i18n)。这些是JSF框架中的核心概念,对于构建功能丰富的、多语言支持的Web...

    jsf中文使用教程jsf中文使用教程

    5. **国际化支持**:JSF支持多语言,这在“JSF中文使用教程”中可能包含如何设置和使用中文资源的内容。 **学习JSF的关键概念**: 1. **Facelet**:Facelets是JSF的默认视图技术,用于创建和组织用户界面组件。 2. ...

    《JSF入门》简体中文版.pdf

    JSF框架通过使用资源包和特定的国际化标签,允许开发者轻松地为不同地区的用户提供本地化的内容。 8. JSFExpressionLanguage JSF表达式语言(EL)提供了一种表达式语法,用于访问和操作数据。EL简化了对 Managed ...

    开发JSF所需要的jar包

    `jstl.jar`和`javax.servlet.jsp.jstl.jar`提供了JSTL库,包含了一系列用于处理常见任务的标签,如条件判断、迭代、国际化等,与JSF结合使用可以增强视图的可读性和维护性。 9. **其他辅助库**: 为了支持一些...

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

    标签:“jsf2 国际化 jpa 标签”这组标签概括了文档的主要内容和关键词,JSF2是文档的核心主题,国际化和JPA分别指明了项目的多语言支持和数据持久化的需求,而“标签”则涉及到在JSF项目中使用的各种标签库。...

    JSF开发文档

    此外,JSF支持国际化,可以为不同地区的用户提供本地化的应用程序。 在数据处理方面,JSF内置了标准转换器和验证器,这些转换器和验证器能够自动处理数据类型转换和输入验证,开发者也可以实现自定义转换器和验证器...

    MyEclipse下开发JSF

    综上所述,JSF在MyEclipse中的开发流程涵盖了环境配置、项目创建、JSF功能添加以及国际化资源的管理。MyEclipse作为强大的开发工具,极大地简化了JSF应用的开发过程,使得开发者可以更加专注于业务逻辑和用户界面的...

Global site tag (gtag.js) - Google Analytics