Java资源国际化

概要:

Java中实现资源国际化的类是java.util.ResourceBundle,使用之前先绑定一个资源。如ResourceBundle.getBundle("*.resource"),*代表路径,它的含义是绑定当前classpath下面的* esource.properties文件,以及所有的* esource_**.properties文件。其中**代表任意的语言环境,如简体中文(zh_CN)、英文(en)等。

绑定之后运用ResourceBundle.getString(Stringkey)方法获得properties属性文件,文件中键为key对应的值。如果当前语言环境为简体中文(zh_CN),程序会先在resource_zh_CN.properties中寻找键为key对应的值;如果没有找到该键(key)或属性文件resource_zh_CN.properties不存在,它会到默认资源文件resource.properties中寻找。如果再没找到,会抛出MissingResourceException异常。

| |目录

代码

package net.xsoftlab.baike;

import java.util.Locale;
import java.util.ResourceBundle;

//操作使用属性文件实现资源国际化的类
public class TextPropI18N {

	public static final String PROP_FILENAME = "net.xsoftlab.baike.resource";
	public static final String POEM_KEY = "poem";
	public static final String GLOBAL_KEY = "poem.global";
	public static final String TEST = "test";
	private static String poem;
	private static String global;
	private static String test;

	public static void showI18N() {// 操作属性文件的方法
		try {
			Locale locale = Locale.ENGLISH;// 使用英文
			ResourceBundle bundle = ResourceBundle.getBundle(PROP_FILENAME, locale);
			poem = bundle.getString(POEM_KEY).trim();// 获得键poem对应的值
			global = bundle.getString(GLOBAL_KEY).trim();// 获得键global对应的值
			test = bundle.getString(TEST);// 获取只在resource.properties存在的键
			System.out.println("使用英文国际化资源...........");
			System.out.println("poem: " + poem);
			System.out.println("global:" + global);
			System.out.println("test:" + test);
			System.out.println();
			locale = Locale.CHINESE;// 使用简体中文
			bundle = ResourceBundle.getBundle(PROP_FILENAME, locale);
			poem = bundle.getString(POEM_KEY).trim();
			global = bundle.getString(GLOBAL_KEY).trim();
			test = bundle.getString(TEST);
			System.out.println("使用中文国际化资源...........");
			System.out.println("poem: " + poem);
			System.out.println("global:" + global);
			System.out.println("test:" + test);
		} catch (Exception e) {
			System.err.println("不能加载属性文件");
			e.printStackTrace();
			poem = "default poem";
			global = "default global";
			test = "default test";
		}
	}

	public static void main(String[] args) {// java程序主入口处
		TextPropI18N.showI18N();// 调用方法显示信息
	}
}

resource.properties

poem=\u4f60\u770b\u4e0d\u89c1\u4f60\u81ea\u5df1\uff0c\u4f60\u6240\u770b\u89c1\u7684\u53ea\u662f\u4f60\u7684\u5f71\u5b50.
poem.global=\u6211\u4e0d\u80fd\u9009\u62e9\u90a3\u6700\u597d\u7684\u3002\u662f\u90a3\u6700\u597d\u7684\u9009\u62e9\u6211\u3002.
test=\u8fd9\u662f\u4e00\u4e2a\u6d4b\u8bd5.

resource_en.properties

poem=What you are you do not see, what you see is your shadow.
poem.global=I cannot choose the best. The best chooses me.

resource_zh_CN.properties

poem=\u4f60\u770b\u4e0d\u89c1\u4f60\u81ea\u5df1\uff0c\u4f60\u6240\u770b\u89c1\u7684\u53ea\u662f\u4f60\u7684\u5f71\u5b50.
poem.global=\u6211\u4e0d\u80fd\u9009\u62e9\u90a3\u6700\u597d\u7684\u3002\u662f\u90a3\u6700\u597d\u7684\u9009\u62e9\u6211\u3002.
test=\u8fd9\u662f\u4e00\u4e2a\u6d4b\u8bd5.


评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
  • 全部评论(0)
资料加载中...
已关注 , 取消