该例子为一个单例模式实现的资源管理类,主要用于多语言环境中语言切换,根据不同语言环境加载不同资源文件
资源文件内容如下
1.英文资源文件 res_en_US.properties
total=TOTAL add=ADD del=DEL view=VIEW
2.中文资源文件res_zh_CN.properties
total=/u603B/u6570 add=/u65B0/u589E del=/u5220/u9664 view=/u67E5/u770B
demo类如下:
import java.util.HashMap; import java.util.Locale; import java.util.ResourceBundle; /** * 资源管理单例类(多语言支持) */ public class ConfigManager { private static final ConfigManager instance = new ConfigManager(); private HashMap<Locale, ResourceBundle> map = new HashMap<Locale, ResourceBundle>(); private final String BASENAME = "res"; // 属性文件短名称 /** * 私有构造函数 */ private ConfigManager() { System.out.println("init..............."); } /** * 返回单例引用 * @return */ public static ConfigManager getInstance() { return instance; } /** * 资源加载处理(加载不同的语言属性文件) * @param language * @param region * @param key * @return */ public synchronized String getValue(String language, String region,String key){ Locale locale = new Locale(language,region); if(!map.containsKey(locale)){ // 根据language,region 加载不同属性文件 ResourceBundle resource = ResourceBundle.getBundle(BASENAME, locale); map.put(locale, resource); } return map.get(locale).getString(key); } /** * @param args */ public static void main(String[] args) { ConfigManager res = ConfigManager.getInstance(); ConfigManager resS = ConfigManager.getInstance(); System.out.println(res.getValue("en","US","del")); System.out.println(res.getValue("en","US","view")); System.out.println(res.getValue("en","US","total")); System.out.println(resS.getValue("zh","CN","del")); System.out.println(resS.getValue("zh","CN","view")); System.out.println(resS.getValue("zh","CN","total")); } }
资源文件同demo在同一目录下............