`
dadi520
  • 浏览: 145782 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

java ResoureBundle 的使用

阅读更多

资源包包含特定于语言环境的对象。当程序需要一个特定于语言环境的资源时(如 String),程序可以从适合当前用户语言环境的资源包中加载它

 

主要API如下

 

// 使用指定的基本名称、语言环境和调用者的类加载器获取资源包。调用此方法等同于调用
// getBundle(baseName, locale, this.getClass().getClassLoader())
public static final ResourceBundle getBundle(String baseName,Locale locale)

// 返回键的枚举。
public abstract Enumeration<String> getKeys()

// 从此资源包或它的某个父包中获取给定键的对象。此方法首先尝试使用 handleGetObject 从此资源包中获取对象。
// 如果不成功,并且父资源包不为 null,则调用父包的 getObject 方法。
// 如果仍不成功,则抛出 MissingResourceException
public final Object getObject(String key)

 

 

子接口 java.util.PropertyResourceBundle ,  java.util.ListResourceBundle

PropertyResourceBundle 由于写入的是.properties文件,所以保存的值都是字符串,用文件实现
ListResourceBundle 可以保存任意类型的数据,用类来实现, 主要实现 contents 方法

 

import java.util.*;
public class StatsBundle_ja_JP extends ListResourceBundle {
    public Object[][] getContents() {
	return contents;
    }
    private Object[][] contents = {
	{ "GDP", new Integer(21300) },
	{ "Population", new Integer(125449703) },
	{ "Literacy", new Double(0.99) },
   }
}

 

 

注意:getBundel 中的参数 baseName( 取名 LabelsBundle) 有一点说明,
如果用 PropertyResourceBundle, 则相对应的文件名为 LabelsBundle_对应的语言.peropertis(如zh_cn, en, de)等

如果用 ListResourceBundle,则对应的类名为 LabelsBundle_语言名_国家名 如(ja_JP , fr_FR ,en_CA)等

 

扩展 ResourceBundle

 

//使用指定基本名称、目标语言环境和控件、调用者的类加载器返回一个资源包。调用此方法等同
//于调用getBundle(baseName, targetLocale, this.getClass().getClassLoader(),control),

public static final ResourceBundle getBundle(String baseName,Locale targetLocale,ResourceBundle.Control control)



import java.util.*;

public class RBControl {
    public static void main(String[] args) {
	test(Locale.CHINA);
	test(new Locale("zh", "HK"));
	test(Locale.TAIWAN);
	test(Locale.CANADA);
    }

    private static void test(Locale locale) {
	ResourceBundle rb = ResourceBundle.getBundle("RBControl", locale,
	     new ResourceBundle.Control() {
		 @Override
		//返回 Locale 的 List,作为 baseName 和 locale 的候选语言环境。在工厂方法每次尝试为目标 Locale 查找资源包时,
		//由 ResourceBundle.getBundle 工厂方法调用此方法。
		 public List<Locale> getCandidateLocales(String baseName, Locale locale) {
		     if (baseName == null)
			 throw new NullPointerException();
		     if (locale.equals(new Locale("zh", "HK"))) {
			 return Arrays.asList(
			     locale,
			     Locale.TAIWAN,
			     // no Locale.CHINESE here
			     Locale.ROOT);
		     } else if (locale.equals(Locale.TAIWAN)) {
			 return Arrays.asList(
			     locale,
			     // no Locale.CHINESE here
			     Locale.ROOT);
		     }
		     return super.getCandidateLocales(baseName, locale);
		 }
	     });
	System.out.println("locale: " + locale);
	System.out.println("\tregion: " + rb.getString("region"));
	System.out.println("\tlanguage: " + rb.getString("language"));
    }
}

 

 

分享到:
评论

相关推荐

    把wsdl文件转换成java类 使用wsdl2Java工具

    首先,让我们详细了解`wsdl2Java`工具的使用步骤: 1. **安装Apache Axis**: 首先,你需要在你的开发环境中安装Apache Axis。这通常涉及下载Axis的二进制发行版,并将其解压到一个适当的目录。确保将该目录添加到...

    Java 使用poi导入excel 并使用xml做数据验证

    Apache POI是一个流行的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx, .xls)。在本项目中,我们结合了POI库和XML技术来实现Excel数据的验证与导入数据库。 首先,...

    java使用ldap修改ad域用户密码

    最后,我们需要安装 JAVA 应用服务器,以便使用 Java 语言连接到 Active Directory 域控制器。 导出域根证书和计算机证书 在安装证书服务后,我们需要导出域根证书和计算机证书,以便使用 Java 语言连接到 Active ...

    javatwain 使用扫描仪

    本程序实现了在web页面上,用JAVA的方式,调用扫描仪进行扫描,并上传至远程服务器。并且可以设置扫描范围、扫描精度、以及扫描UI显示等! 该版本在uploadpath参数设置为“http://localhost/xxx.action”,即使用...

    java源码包---java 源码 大量 实例

     使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...

    JAVA_API1.6文档(中文)

    java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt....

    Java2Pas Java代码转pas代码

    Java是一种广泛使用的高级编程语言,以其平台无关性和强大的类库支持闻名。它的语法受到C++的影响,但引入了垃圾回收机制,简化了内存管理。另一方面,Pascal则是一种较老的语言,源于1970年代,因其清晰的语法结构...

    《单元测试之道Java版:使用JUnit》PDF 下载

    《单元测试之道Java版:使用JUnit》PDF 下载

    Java实现ocr图片识别(PaddleOCR)飞桨

    - 使用Java的图像处理库,如JavaCV或JavaFX,进行这些操作。 5. **结果解析**: - 识别结果通常是JSON格式,Java需要解析这个结果,提取出所需的文字信息。 - 使用Jackson或Gson等库进行JSON解析。 6. **API...

    Java 中文入门学习手册合集[chm版]

    第一章 Java语言的产生及其特点 第二章 Java程序开发与运行环境 第三章 Java程序设计基础 第四章 Java应用程序的基本框架 第五章 Java的类 第六章 Java图形用户接口 第七章 多线程 第八章 Java的"异常" 第九...

    java集成webkit浏览器

    具体实现过程中,Java开发者会使用如DJNativeSwing这样的第三方库,它提供了一个桥接机制,使得Java可以直接调用WebKit的C/C++接口。DJNativeSwing-SWT.jar是这个库的一部分,专门用于在SWT应用中集成WebKit。...

    Java使用TCP和UDP传输文件的源代码

    本资源是使用 java,分别用 TCP 和 UDP 传输文件的源代码。读者朋友可以下载下来,参考着满足自己的需求。 另有博客《Java 使用 TCP 和 UDP 传输文件》可以参考,地址是:...

    java使用HttpClient通过url下载文件到本地

    - **创建HttpClient实例**:首先,我们需要创建一个HttpClient对象,例如使用`HttpClientBuilder`或`HttpClients.createDefault()`方法。 - **构建HttpGet请求**:使用`HttpGet`类创建一个HTTP GET请求,指定要...

    Java+flex使用dom4j读写xml

    这个小例子是使用Java作为服务端、Flex做前台,对一个xml文件的读取和写入。 环境:MyEclipse6.0.1+Flex3插件版,jdk1.6,tomcat6.0,dom4j1.6.1,lcds.war, 使用技术:1.Java+flex,及其对象的转换。 2.Java方面...

    java错误处理:java.lang.OutOfMemoryError: Java heap space

    假设一个使用Eclipse开发的项目在进行全站HTML文件生成时出现了“java.lang.OutOfMemoryError: Java heap space”异常。为了解决这个问题: 1. **调整JVM参数**: - 在Eclipse的启动脚本中添加`-Xmx256M`来增加...

    kerberos的java实现

    在Java中,我们可以使用`KerberosLoginModule`实现Kerberos认证。这个模块是Java的登录框架(JAAS,Java Authentication and Authorization Service)的一部分,允许用户根据策略文件配置认证流程。 - **配置JAAS...

    锐浪Grid++Report报表web(Java)版使用手册

    锐浪Grid++Report报表Web(Java)版使用手册。 非常详细。 内容列表: 1.报表设计器安装文件 2.报表设计器的使用 3.报表页面和JS文件及使用手册 4.报表后台代码的文件及使用手册(整合Struts) (附加.html,.js,.java,....

    java调用json参数的webservice

    Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级应用中尤为流行,尤其是在构建大型的网络应用程序方面。 JSON(JavaScript Object Notation)是一种轻量级的数据交换...

    java动态识别文件编码EncodingDetect.java附使用方法很简单

    当我们循环遍历文件进行操作的时候可能遇到各种各样的文件编码格式,如果不知道当前循环的文件格式的话,将会遇到各种各样的问题,...使用java动态识别文件编码EncodingDetect.java这个工具类以后就变得异常简单了!

Global site tag (gtag.js) - Google Analytics