`
long_yu2
  • 浏览: 334014 次
社区版块
存档分类
最新评论

java 资源包(ResourceBundle) 详解【2】

 
阅读更多
java.util


类 ResourceBundle.Control


java.lang.Object
java.util.ResourceBundle.Control
正在封闭类:
ResourceBundle



public static class ResourceBundle.Control extends ObjectResourceBundle.Control 定义一个回调方法集,它在包加载进程中由 ResourceBundle.getBundle 工厂方法调用。
换句话说,ResourceBundle.Control 与工厂方法协作可用于加载资源包。回调方法的默认实现为工厂方法提供执行默认行为的必要信息。


除了回调方法外,还定义了 toBundleName 和 toResourceName 方法,其主要目的是为实现回调方法提供方便。
但是,若要在本地化资源的组织和打包中提供不同的约定,也可以重写 toBundleName 方法。toResourceName 方法是 final 方法,以避免使用错误的资源和类名称分隔符。


两个工厂方法 getControl(List) 和 getNoFallbackControl(List) 都提供 ResourceBundle.Control 实例,这些实例实现默认包加载进程的常见变量。


在相同基本包的所有 ResourceBundle.getBundle 调用中,getFormats 方法返回的格式和 getCandidateLocales 方法返回的候选语言环境必须一致。


否则,ResourceBundle.getBundle 方法返回意料之外的包。
例如,如果 getFormats 方法在
第一次调用 ResourceBundle.getBundle 时只返回 "java.class",
第二次调用时只返回 "java.properties",
那么第二次调用返回的基于类的包将是在第一次调用过程中缓存的那个包。



如果 ResourceBundle.Control 实例被多个线程同时使用,则它必须是线程安全的。
ResourceBundle.getBundle 不会同时调用 ResourceBundle.Control 方法。方法的默认实现是线程安全的。


应用程序可以指定 getControl 工厂方法返回的 ResourceBundle.Control 实例,
也可以指定从 ResourceBundle.Control 子类创建的 ResourceBundle.Control 实例,
以自定义包加载进程。下面是对默认包加载进程进行更改的示例。


示例 1


以下代码让 ResourceBundle.getBundle 只查找基于属性的资源。


import java.util.*;
import static java.util.ResourceBundle.Control.*;
...
ResourceBundle bundle =
ResourceBundle.getBundle("MyResources", new Locale("fr", "CH"),
ResourceBundle.Control.getControl(FORMAT_PROPERTIES));


给定 ResourceBundle.getBundle 描述的示例中的资源包,
此 ResourceBundle.getBundle 调用加载 MyResources_fr_CH.properties,
它的父属性是 MyResources_fr.properties,
而后者的父属性是 MyResources.properties。(没有隐藏 MyResources_fr_CH.properties,但隐藏了 MyResources_fr_CH.class。)



示例 2 :


以下转帖:http://blog.csdn.net/shanliangliuxing/article/details/6827972

一、认识国际化资源文件

这个类提供软件国际化的捷径。通过此类,可以使您所编写的程序可以:
轻松地本地化或翻译成不同的语言
一次处理多个语言环境
以后可以轻松地进行修改,支持更多的语言环境

说的简单点,这个类的作用就是读取资源属性文件(properties),然后根据 .properties文件 的名称信息(本地化信息),匹配当前系统的国别语言信息(也可以程序指定),然后获取相应的properties文件的内容。

使用这个类,要注意的一点是,这个properties文件的名字是有规范的:

一般的命名规范是: 自定义名_语言代码_国别代码.properties,
如果是默认的,直接写为:自定义名.properties
比如:
myres_en_US.properties
myres_zh_CN.properties
myres.properties

当在中文操作系统下,如果myres_zh_CN.properties、myres.properties两个文件都存在,则优先会使用myres_zh_CN.properties,
当myres_zh_CN.properties不存在时候,会使用默认的myres.properties。

没有提供语言和地区的资源文件是系统默认的资源文件。
资源文件都必须是ISO-8859-1编码,因此,对于所有非西方语系的处理,都必须先将之转换为Java Unicode Escape格式。转换方法是通过JDK自带的工具native2ascii.

二、实例

定义三个资源文件,放到src的根目录下面(必须这样,或者你放到自己配置的calsspath下面。

myres.properties
aaa=good
bbb=thanks


myres_en_US.properties
aaa=good
bbb=thanks


myres_zh_CN.properties

aaa=\u597d
bbb=\u591a\u8c22


打印:



good

分享到:
评论

相关推荐

    java2 sdk 类库详解.rar

    13. **国际化**:Java 2 SDK支持多语言环境,通过ResourceBundle和Locale类,开发者可以轻松实现应用程序的国际化和本地化。 14. **垃圾回收**:Java的自动内存管理机制,即垃圾回收,负责管理对象的生命周期,避免...

    Java2 类库详解

    Java2 类库详解 在Java编程领域,Java2 类库,也称为Java 2 Platform (J2SE),是Java开发的基础。它包含了丰富的API(应用程序接口),为开发者提供了构建复杂应用所需的各种工具和服务。Java2类库是Java的核心组成...

    java的.awt包和java.util包的区别

    - **ResourceBundle**:用于读取和处理不同语言资源的类。 #### Java.awt包详解 Java.awt包主要提供了构建和管理应用程序的图形用户界面(GUI)的类。这个包中的类通常用于绘制图形图像、处理事件、以及创建窗口...

    Java2类库详解(适合初学者)

    Java2类库,也被称为Java Standard Edition (Java SE) API,是Java编程语言的核心组成部分,为开发者提供了丰富的功能和工具,使得开发各种类型的应用程序变得可能。这个类库包括了基础的类、接口和异常,涵盖了输入...

    [Java Swing图形界面开发与案例详解].王鹏等.扫描版

    本资源 "[Java Swing图形界面开发与案例详解].王鹏等.扫描版" 提供了深入学习Java Swing开发的详细指南,由王鹏等专家编著。这份PDF文档可能包含了丰富的理论知识、实战技巧以及实际案例,帮助读者全面掌握Swing的...

    JavaSwing图形界面开发与案例详解和实例代码

    本资料包"JavaSwing图形界面开发与案例详解"包含了对Swing的深入讲解以及相关的实例代码,旨在帮助开发者掌握Swing的基本用法和高级特性。 Swing的核心组件包括JFrame(窗口)、JPanel(面板)、JButton(按钮)、...

    JAVA Web實現國際化插件

    提供的PPT详解可能包含了关于如何配置和使用这个插件的详细步骤,包括如何创建和组织资源文件,如何在Java代码中引用`ResourceBundle`,以及如何在Web页面(如JSP)中调用这些资源来实现动态语言切换。PPT可能会...

    Java2 API帮助文档

    8. **国际化**:java.text和java.util包提供了日期、时间、数字和消息的本地化处理,如DateFormat、NumberFormat、ResourceBundle等。 9. **安全管理**:Java的安全模型基于SecurityManager,可以限制代码执行的...

    java特效 java的起源

    根据给定的信息,我们可以梳理出以下关于 Java 国际化(I18N)和支持多语言资源包处理的相关知识点。 ### Java 国际化的概念 Java 的国际化(Internationalization,简称 I18N)是指设计应用程序使其能在多种语言...

    Java实训教程 Java软件开发实战 Java开发框架介绍 struts2_6_国际化 共34页.pptx

    - 在Java代码中通过`Locale`和`ResourceBundle`获取指定语言环境下的资源。 - 示例代码: ```java package com.shinowit; import java.util.Locale; import java.util.ResourceBundle; public class ...

    java 国际化转换

    ### Java国际化转换详解 #### 一、Java国际化概念与意义 在软件开发过程中,随着产品的全球化,越来越多的应用程序需要支持多种语言环境。这就引出了一个重要的概念——国际化(Internationalization)。通常简称...

    JAVA6.0帮助文档

    6. **国际化**:`java.text`和`java.util`包中的类支持国际化和本地化,如`ResourceBundle`用于管理不同语言的资源文件,`DateFormat`和`NumberFormat`处理日期和数字的格式化。 三、JVM优化 Java 6.0的JVM进行了多...

    记事本(java语言编写)

    Java的`ResourceBundle`类和`PropertyResourceBundle`可以用来管理语言资源,实现多语言切换。 总的来说,这个Java编写的记事本程序展示了Java GUI编程的基本框架和常用技术,对于初学者来说,是一个很好的学习案例...

    java文件的加载

    ### Java 文件加载机制详解 #### 一、概述 在Java应用开发中,特别是Web应用程序的构建过程中,资源文件(如配置文件、属性文件等)的加载是必不可少的一部分。本文将重点探讨Java环境下不同方式下的文件加载方法...

    ckfinder的java实现

    **CKFinder的Java实现详解** CKFinder是一款功能强大的文件管理和上传工具,主要用于Web应用程序,它提供了用户友好的界面,使得用户能够轻松地浏览、上传、下载、删除和管理服务器上的文件和图片。CKFinder通常与...

    java 网站模板

    【Java 网站模板详解】 Java 网站模板是一种预先设计并开发好的网站框架,主要用于快速构建企业级别的管理信息系统。它集成了常见的页面布局、样式设计、交互逻辑以及功能模块,使得开发者能够以更高效的方式搭建...

    JDK_API_1_6_zh_CN.rar_JAVA6.0 API__Java 2 Platform_java api

    《JAVA6.0 API——Java 2 Platform详解》 Java 2 Platform Standard Edition 6.0(简称JDK 1.6)是Java发展历程中的一个重要里程碑,它为开发者提供了丰富的API,大大增强了Java应用程序的开发效率和功能。本文将...

    Java_Weather.rar_forecast_java weath_java天气_天气预报

    8. **国际化与本地化**:如果程序支持多种语言和地区,可能会涉及到Java的国际化和本地化特性,使用ResourceBundle来管理不同语言的字符串资源。 9. **测试**:为了确保程序的正确性,开发者可能编写了单元测试或...

    java API使用-中文word

    ### Java API 使用详解 #### 一、Java 面向对象基本概念 Java是一种完全的面向对象编程语言,除了原始数据类型(如int、double等),几乎所有事物都被视为对象。对象是类的实例,拥有状态(属性)和行为(方法)。...

    高手总结java常用API.doc

    ### Java常用API详解 #### 一、Java面向对象基本概念 Java是一种主要基于面向对象编程(OOP)的语言,除了原始数据类型(如int、double等),几乎所有其他元素都是对象。对象是类的一个实例,拥有其特定的状态和行为...

Global site tag (gtag.js) - Google Analytics