國際化語言工具類ResourceBundleUtils .java
阿新 • • 發佈:2019-01-09
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"));;
}
}