读书人

带参数读书资源文件二

发布时间: 2012-10-07 17:28:51 作者: rapoo

带参数读书资源文件2
String language = StringUtils.defaultString(locale.getLanguage());
String localeFileName = prefix + "_" + language
+ suffix;
File file = new File(filePath, localeFileName);
try
{
if (!file.exists())
{
file = new File(filePath, fileName);
if (!file.exists())
{
throw new IllegalArgumentException("File not found: "
+ file.getAbsolutePath());
}
}
fis = new FileInputStream(file);
messages = new Properties();
messages.load(fis);
}
catch (IOException ioe)
{
log.error(ioe);
}
}
//关闭文件流
finally
{
if (fis != null)
{
try
{
fis.close();
}
catch (IOException e)
{
}
}
}

return messages;
}

/**
* 获取主程序的资源文件
*/
private static Properties getMainPropFile(Locale locale)
{
String lang = locale.getLanguage();
Properties message = null;
if (messageMap.containsKey(lang))
{
message = messageMap.get(lang);
}
else
{
message = getPropertiesFromFile(messagePath,
IConfigItem.RESOURCES_FILE_NAME,
locale);
messageMap.put(lang, message);
}
return message;
}

/**
* 根据key值和locale实现国际化
* @return 国际化之后的字符串
*/
public static String getMessage(String key, Locale locale, String... args)
{
if (locale == null)
{
return key;
}
Properties messages = getMainPropFile(locale);
if (messages == null)
{
return key;
}
String message = messages.getProperty(key, key);
if (message != null && args.length >0)
{
return format(message, args);
}
return message;
}

/**
*
* 可以读出资源文件,得到一系列信息
* @return 属性集
*/
public static Properties getMessageProperties(Locale locale)
{
Properties message = getPropertiesFromFile(messagePath,
"ApplicationResources.properties",
locale);
return message;
}

/**
* 获取key对应的国际化字符串
* @return key对应的国际化字符串
*/
public String getMessage(String key)
{
return this.messages == null ? key
: this.messages.getProperty(key, key);
}

/**
* 获取key对应的国际化字符串
* @param key
* @param args 参数序列
* @return key对应的国际化字符串(经过格式化的)
*/
public String getMessage(String key, String... args)
{
return format(getMessage(key), args);
}

/**
* 给字符串设置参数
* @return 格式化之后的字符串
*/
public static String format(String message, String... args)
{
try
{
MessageFormat mf = new MessageFormat(message);
return mf.format(args);
}
catch (Exception e)
{
return message;
}
}


public Locale getLocale()
{
return locale;
}

}

读书人网 >软件架构设计

热点推荐