1.1 什么是I18N问题?
在英文中, 国际化(Internationalization)被缩写为I18N, 即只取首尾两个字母, 中间字母为18个。
问题在哪里?
1.2 一个简单的例子
public class EnglishHelloWorld {
/** * @param args */ public static void main(String[] args) { System.out.println("Hello World"); }
}
|
public class ChineseHelloWorld {
/** * @param args */ public static void main(String[] args) { System.out.println("世界,你好"); }
} |
上述两个例子中,如果要分别输出英文和中文文本,就需要写两个程序。利用国际化处理机制,可以只写一个程序。即我们需要将程序中硬编码的文本转移到外部的资源文件(.properties文件)中!针对每一种语言环境,我们需要编写一个资源文件。然后指定当前应用程序所使用的语言环境,JAVA中的国际化处理机制,将能够自动找到对应的资源文件,并将其中的文本内容读出来。
下面我们将硬编码的文本转移到资源文件中。我们需要三个资源文件:
一个缺省的资源文件,即如果不指定语言环境,默认使用的资源文件;
一个用于中文环境的资源文件,如果指定是中文环境,将使用此资源文件;
一个用于英文环境的资源文件,如果指定是英文环境,将使用此资源文件;
MessageResources.properties文件:
hello=Hello World! |
MessageResources_en.properties文件:
hello=Hello World! |
MessageResources_zh.properties文件: