JAVA国际化

需要的配置文件(配置文件的basename是message):
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);
	}

你可能感兴趣的:(java)