参考文献:《Java疯狂讲义》(第三版)
国际化与格式化
Java国际化的思路:
Java程序国际化的主要通过如下三个类完成:
1、java.util.ResourceBundle:用于加载国家、语言资源包;
2、java.util.Locale:用于封装特定的国家/区域、语言环境;
3、java.text.MessageFormat:用于格式化带占位符的字符串;
为了实现程序的国际化,必须先提供程序所需要的资源文件。资源文件的内容是很
多key-value对,其中key是程序使用的部份,而value则是程序界面的显示字符串。
完成程序国际化:
例子代码:
import java.util.*;
public class RawHello{
public static void main(String[] args){
//取得系统默认的国家/语言环境
Locale myLocale=Locale.getDefault
(Locale.Category.FORMAT);
ResourceBundle bundle=ResourceBundle.getBundle
("mess",myLocale);
//打印从资源文件中取得消息
System.out.println(bundle.getString("hello"));
}
}
mess_en_US.properties文件如下:
#资源文件的内容是key-value对
hello=Welcome you!
mess.properties文件如下:
#资源文件的内容是key-value对
hello=你好!
对mess.properties文件执行
native2ascii 源资源文件 目的资源文件操作
生成一个程序需要的资源文件
注:Java是区分大小写的编程语言,我之前输入的是Hello字符串,运行会发生异常;
知识点:Java程序国际化的关键类是ResourceBundle,它有一个静态方法:
getBundle()String baseName,Locale locale),该方法根据Locale加载资源
文件,Locale封装了一个国家、语言。
例子:
ResourceBundle bundle=ResourceBundle.getBundle("mess",myLocale);
上面代码会加载baseName为"mess"的系列系统资源文件之一,对于简体中文的
Locale,则加载mess_zh_CN.properties文件
一旦加载了该文件,该资源文件内容就是多个key-value对,程序就根据key来获取
指定的信息,例如获取了key为hello的信息,该消息是"你好"。
Java程序国际化的关键类是ResourceBundle和Locale,ResourceBundle根据不同
的Locale加载语言资源文件,再根据指定的key取得已加载语言资源文件中的字符串。