java.util.ResourceBundle使用详解
一、认识国际化资源文件
这个类提供软件国际化的捷径。通过此类,可以使您所编写的程序可以:
轻松地本地化或翻译成不同的语言
一次处理多个语言环境
以后可以轻松地进行修改,支持更多的语言环境
说的简单点,这个类的作用就是读取资源属性文件(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
import java.util.Locale;
import java.util.ResourceBundle;
/**
* 国际化资源绑定测试
*
* @author leizhimin 2009-7-29 21:17:42
*/
public class TestResourceBundle {
public static void main(String[] args) {
Locale locale1 = new Locale("zh", "CN");
ResourceBundle resb1 = ResourceBundle.getBundle("myres", locale1);
System.out.println(resb1.getString("aaa"));
ResourceBundle resb2 = ResourceBundle.getBundle("myres", Locale.getDefault());
System.out.println(resb1.getString("aaa"));
Locale locale3 = new Locale("en", "US");
ResourceBundle resb3 = ResourceBundle.getBundle("myres", locale3);
System.out.println(resb3.getString("aaa"));
}
}
运行结果:
好
好
good
Process finished with exit code 0
如果使用默认的Locale,那么在英文操作系统上,会选择myres_en_US.properties或myres.properties资源文件。
三、认识Locale
Locale 对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的 操作,它使用 Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。
使用此类中的构造方法来创建 Locale:
Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
创建完 Locale 后,就可以查询有关其自身的信息。使用 getCountry 可获取 ISO 国家代码,使用 getLanguage 则获取 ISO 语言代码。可用使用 getDisplayCountry 来获取适合向用户显示的国家名。同样,可用使用 getDisplayLanguage 来获取适合向用户显示的语言名。有趣的是,getDisplayXXX 方法本身是语言环境敏感的,它有两个版本:一个使用默认的语言环境作为参数,另一个则使用指定的语言环境作为参数。
相关推荐
java.util.ResourceBundle使用详解
Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强...通过熟练掌握和使用java.util包中的类和接口,开发者能够更加高效地处理数据和实现复杂逻辑。
### Java的.awt包和.java.util包的区别 #### Java.util包详解 Java.util包是一个非常重要的标准库之一,其中包含了大量有用的类和接口,为开发者提供了丰富的功能。此包中的类和接口可以分为以下几大类别: 1. **...
在Java中,`java.util.MissingResourceException`是当尝试从`ResourceBundle`中获取一个不存在的资源时抛出的异常。`ResourceBundle`用于管理应用的多语言支持,例如,通过加载.properties文件来提供不同的字符串...
Java util包使用详解 Java util包是Java语言中一个实用的工具类库,提供了许多有用的方法和数据结构。下面将逐一介绍其中几个重要的类。 日期类Date Java中的日期类封装了有关日期和时间的信息,用户可以通过调用...
private static ResourceBundle bundle = ResourceBundle.getBundle("cardBin"); private static Map, String> bankName = new HashMap(); static{ bankName.put("ABC", "中国农业银行"); bankName.put(...
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); // 示例:获取某个键的值 String value = rb.getString("key"); System.out.println(value); } } ``` #### 三、使用 `java.util...
使用`java.util.ResourceBundle.getBundle()` `ResourceBundle`是Java中用于资源绑定的类,它可以用来获取国际化资源。这里我们使用它来加载`Properties`文件。 **代码示例:** ```java import java.util.Locale...
ResourceBundle rb = ResourceBundle.getBundle("path/to/your/file"); String value = rb.getString("key"); System.out.println(value); } } ``` ### 方法三:使用`java.util.PropertyResourceBundle`类 与...
ResourceBundle bundle = ResourceBundle.getBundle("config"); String value = bundle.getString("key"); System.out.println("Value: " + value); } } ``` 在这里,配置文件名(不包括扩展名)作为`...
9. **国际化和本地化**:Java.util.Locale和ResourceBundle类支持不同地区的语言和文化习惯。 10. **数据库连接**:JDBC(Java Database Connectivity)提供了一套接口和类,如Connection、Statement、ResultSet,...
Ø java.util.ResourceBundle:用于加载一个国家、语言资源包。 Ø java.util.Locale:用于封装一个特定的国家/区域、语言环境。 Ø java.text.MessageFormat:用于格式化带占位符的字符串。 为了实现程序的国际...
3. 加载XML文件:在代码中使用`ResourceBundle.getBundle()`方法,传入自定义的ResourceBundle类名和XML文件路径,系统会自动调用自定义的ResourceBundle子类来加载资源。 相比于传统的.properties文件,Xml ...
Java的`java.util`包是Java标准库中最基础且最重要的部分之一,它包含了大量用于处理常用数据结构、事件处理、日期和时间、I/O流、集合框架等的类和接口。这个包为开发者提供了丰富的功能,使得编写Java程序更加便捷...
- `java.util.ResourceBundle`是Java内置的国际化(i18n)支持,可以用来加载不同语言的资源文件,实现多语种替换。 - `org.springframework.context.MessageSource`是Spring框架提供的,它可以更加灵活地管理多...
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); // 获取属性值 System.out.println(rb.getString("welcome")); } } ``` **注意事项:** - 属性文件通常需要放在特定目录下,且遵循...
10. **国际化与本地化**:`java.text`和`java.util.locale`包提供了支持不同地区和语言的工具,如NumberFormat、DateFormat和ResourceBundle,帮助开发者创建全球化应用。 尽管这个压缩包可能并不完整,但它提供的...
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); // 示例:获取资源文件中的属性 String greeting = rb.getString("greeting"); System.out.println("Greeting: " + greeting); } ...
- java.util.ResourceBundle#getBundle(),加载资源束。 ***.URL#openConnection(),创建一个URL连接实例。 - java.sql.DriverManager#getConnection(),通过驱动管理器获取数据库连接。 b) 建造者模式(Builder...