1. 程式人生 > >國際化語言工具類ResourceBundleUtils .java

國際化語言工具類ResourceBundleUtils .java

ResourceBundleUtils .java

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;



/**
 * 國際化語言工具類
 * @author 
 *
 */
public
class ResourceBundleUtils { /** * 國際化語言檔案的名稱 */ public static final String LANGUAGE_FILE_NAME = "your_file_name"; public static Map<String, ResourceBundle> ResourceBundleConfigMap = new HashMap<String, ResourceBundle>(); public static Log log = LogFactory.getLog(ResourceBundleUtils.class); /** * 返回國際化語言 * @param
language 使用者當前的語言環境 * @param key 語言配置檔案的key * @return * @throws Exception */
public static String getValue(String language, String key) { return getValue(language2Locale(language), key); } public static String getValue(Locale locale, String key) { String language = locale.getLanguage() + "_"
+ locale.getCountry(); ResourceBundle config = ResourceBundleConfigMap.get(language); if(config == null){ ResourceBundleConfigMap.put(language, ResourceBundle.getBundle(LANGUAGE_FILE_NAME, locale)); } try{ return ResourceBundleConfigMap.get(language).getString(key).trim(); }catch(MissingResourceException e){ log.error("使用者語言環境引數language = " + language); log.error("無法找到key為 "+key+" 對應的value.",e); return key; } } public static Locale language2Locale(String language){ try{ String[] locale = language.split("_"); return new Locale(locale[0], locale[1]); }catch(Exception e){ log.error("語言轉換成Locale失敗,已設定成預設語言", e); return Locale.getDefault(); } } //測試 public static void main(String[] args) throws Exception { System.out.println(ResourceBundleUtils.getValue("zh_CN", "xxx"));; } }