需要的配置文件(配置文件的basename是message):
message.properties
message_en_US.properties
message_zh_CN.properties
java实现类:
message.properties
message_en_US.properties
message_zh_CN.properties
java实现类:
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
public class JavaI18n {
public static void main(String[] args) {
Locale defaultLocale = Locale.getDefault();//默认的Locale和系统语言设置项一样
System.out.println("defaultCountry:"+defaultLocale.getCountry());
System.out.println("defaultLanguage:"+defaultLocale.getLanguage());
//第一个参数传递的是配置文件的BaseName,如果配置文件不在当前目录下,则可以用directory.basename
ResourceBundle rb = ResourceBundle.getBundle("message", defaultLocale);
//k1,k2为对应的配置文件(basename_language_country.properties)中的key,
//如果在不到对应的key则抛出java.util.MissingResourceException
//System.out.println(rb.getString("k1"));
//System.out.println(rb.getString("k2"));
//指定Locale
//第一个参数为语言,第二个参数为国家
Locale lo = new Locale("en","US");
ResourceBundle rb1 = ResourceBundle.getBundle("message", lo);
//如果找不到指定的locale所对应的配置文件,则程序会找系统默认的语言环境的配置文件,输出其中的key值,
//如果系统默认语言环境也没有对应的配置文件则会有异常,所以最好配置一个缺省的配置文件,basename.properties
System.out.println(rb1.getString("k1"));
System.out.println(rb1.getString("k2"));
//动态生成信息,填充占位符,占位符从0开始
MessageFormat mf = new MessageFormat(rb1.getString("k1"));
//传递的一个object数组,数组元素与占位符去匹配填充
String s1 = mf.format(new Object[]{"Tom"});
System.out.println(s1);
}