使用java编写一个带GUI程序或者其他需要给用户传递文字信息的程序的时候,就很有可能需要用到国际化的知识,来总结一下。
所谓的国际化,就是使编写的程序可以适应不同的语言环境,比如,在中文环境下,可以与用户使用中文交互,在英文环境下则切换为英文。而这个切换过程不需要修改代码或者仅仅修改少量的代码。java给我们提供了这样的实现。
java文件国际化
我们通过将与界面显示有关系的资源提取出来到资源文件中,然后读取不同的资源文件来达到国际化的目的。在java中,这些是通过ResourceBundle这个类来实现的。
ResourceBundle分为两种,一种是ListResourceBundle,另一种是PropertyResourceBundle。下面介绍这两种ResourceBundle的使用方法:
首先列出demo工程的代码结构:
TestResourceBundle
|
|--src
|
|--kyu
|
|--bundle
| |
| |--ListResourceTranslator.java
| |
| |--PropertyResourceTranslator.java
| |
| |--ResourceTranslator.java
|
|--test
| |
| |--App.java
|
|--Errors_en_Us.java
|
|--Errors_zh_CN.java
|
|--Errors.java
|
|--Errors_en_Us.properties
|
|--Errors_zh_CN.properties
|
|--Errors.properties
PropertyResourceBundle
首先需要建立若干语言的properties文件: 自定义名语言代码国别代码.properties
比如:errors_en_US.properties, errors_zh_CN.properties
其中的语言代码和国别代码,分别是你要国际化的语言。需要几种语言,就添加几个properties文件。
通过打印java所支持的语言和国家查看:
private static void printLocal() {
Locale[] localeList = Locale.getAvailableLocales();
for (int i = 0; i < localeList.length; i++) {
System.out.println(localeList[i].getDisplayCountry() + ": " + localeList[i].getCountry());
System.out.println(localeList[i].getDisplayLanguage() + ": " + localeList[i].