1 33 package net.myvietnam.mvncore.i18n; 34 35 import java.text.MessageFormat ; 36 import java.util.*; 37 38 39 import org.apache.commons.logging.Log; 40 import org.apache.commons.logging.LogFactory; 41 42 public class CacheResourceBundle { 43 44 private static Log log = LogFactory.getLog(CacheResourceBundle.class); 45 46 private String bundleName = null; 47 48 private Hashtable cacheResourceBundle = new Hashtable(); 49 50 public CacheResourceBundle(String bundleName) { 51 if (bundleName == null) { 52 throw new IllegalArgumentException ("bundleName cannot be null."); 53 } 54 this.bundleName = bundleName; 55 } 56 57 62 public ResourceBundle getResourceBundle(Locale locale) { 63 if (locale == null) { 64 locale = Locale.ENGLISH; 65 } 66 ResourceBundle resourceBundle = (ResourceBundle)cacheResourceBundle.get(locale); 67 if (resourceBundle == null) { 68 try { 69 resourceBundle = ResourceBundle.getBundle(bundleName, locale); 70 } catch (MissingResourceException e) { 71 log.error("Cannot load the ResourceBundle = " + bundleName); 72 73 log.info("Using EmptyResourceBundle because cannot load ResourceBundle = " + bundleName); 74 resourceBundle = new EmptyResourceBundle(); 75 } 76 cacheResourceBundle.put(locale, resourceBundle); 77 } 78 return resourceBundle; 79 } 80 81 public String getString(Locale locale, String key) { 82 ResourceBundle resourceBundle = getResourceBundle(locale); 83 try { 84 return resourceBundle.getString(key); 85 } catch (Exception ex) { 86 return "[[" + key + "]]"; 87 } 88 } 89 90 public String getString(Locale locale, String key, Object [] args) { 91 ResourceBundle resourceBundle = getResourceBundle(locale); 92 try { 93 String message = resourceBundle.getString(key); 94 95 MessageFormat formatter = new MessageFormat (message); 96 if (locale != null) { 97 formatter.setLocale(locale); 98 } 99 message = formatter.format(args); 100 return message; 101 } catch (Exception ex) { 102 return "[[[" + key + "]]]"; 103 } 104 } 105 } 106 | Popular Tags |