1、 提示信息国际化
基础知识
概念
国际化英文单词为:Internationalization,又称I18N,I为因为单词的第一个字母,18为这个单词的长度,而N代表这个单词的最后一个字母
Java国际化使用的类
Java国际化主要通过如下3个类完成
java.util.ResourceBundle:用于加载一个资源(配置文件)
java.util.Locale:对应一个特定的国家/区域、语言环境。
java.text.MessageFormat:用于将消息格式化
国际化资源文件
资源文件的命名可以有3种格式:
XXXX_language_country.properties 优先加载,与环境匹配的配置文件(优点加载标记了language_country)
XXXX_language.properties
XXXX_properties
例如:
messages_zh_CN.properties (中文,中华人民共和国)
messages_en_US.properties(英语,美国)
messages.properties
测试(找到工具类中的ResourcesUtil类 测试 注意配置文件要写)
//根据操作系统环境获取语言环境
Locale locale = Locale.getDefault();
System.out.println(locale.getCountry());//输出国家代码
System.out.println(locale.getLanguage());//输出语言代码s
//加载国际化资源(classpath下resources目录下的messages.properties,如果是中文环境会优先找messages_zh_CN.properties)
ResourceBundle rb = ResourceBundle.getBundle("resources.messages", locale);
String retValue = rb.getString("101");//101是messages.properties文件中的key
System.out.println(retValue);
//信息格式化,如果资源中有{}的参数则需要使用MessageFormat格式化,Object[]为传递的参数,数量根据资源文件中的{}个数决定
String value = MessageFormat.format(retValue, new Object[]{100,200});
System.out.println(value);
国际化工具类ResourcesUtil
学会使用Util工程中的ResourcesUtil从messages.properties中根据key提取信息
ResourcesUtil 类中两个重载方法
方法1:public static String getValue(String fileName, String key)
根据key获取信息
方法2:public static String getValue(StringfileName, String key, Object[] objs)
根据key获取信息最且传入动态参数,参数是object[] 数组
处理结果工具类ResultUtil (主要方法四个)
使用国际化工具取国际化信息并创建操作成功、操作失败、警告等结果对象。
方法如下:
创建失败信息
public static ResultInfo createFail(String fileName,int messageCode,Object[]objs){
Stringmessage=null;
if(objs == null){
message= ResourcesUtil.getValue(fileName, messageCode+"");
}else{
message= ResourcesUtil.getValue(fileName, messageCode+"",objs);
}
return newResultInfo(ResultInfo.TYPE_RESULT_FAIL,messageCode,message);
}
创建成功信息
public static ResultInfo createSuccess(String fileName,intmessageCode,Object[] objs){
Stringmessage=null;
if(objs == null){
message= ResourcesUtil.getValue(fileName, messageCode+"");
}else{
message= ResourcesUtil.getValue(fileName, messageCode+"",objs);
}
return new ResultInfo(ResultInfo.TYPE_RESULT_SUCCESS,messageCode,message);
}
创建警告信息
public static ResultInfo createWarning(String fileName,intmessageCode,Object[] objs){
Stringmessage=null;
if(objs == null){
message= ResourcesUtil.getValue(fileName, messageCode+"");
}else{
message= ResourcesUtil.getValue(fileName, messageCode+"",objs);
}
return newResultInfo(ResultInfo.TYPE_RESULT_WARN,messageCode,message);
}
创建提交结果对象
public static SubmitResultInfo createSubmitResult(ResultInforesultInfo){
return new SubmitResultInfo(resultInfo);
}
创建异常结果对象
public static void throwExcepion(ResultInfo resultInfo) throwsExceptionResultInfo{
throw new ExceptionResultInfo(resultInfo);
}
1.2 本系统国际化配置
1.2.1 定义资源文件
1.拷贝 message 定义messages.properties 文件写提示信息
将系统中所有的提示信息(操作成功信息、操作异常信息普通提示信息等)统一配置在资源文件,在java代码只需要调用工具类从资源中文件取出配置信息,避免硬编码.
按模块定义
1.2.2 国际化资源文件使用
createFail方法如何使用?
createFail创建错误结果一般都是为了抛出异常我们在此类中也封装了抛出异常的方法throwExcepion。createFail方法返回throwExcepion,throwExcepion
方法的参数是throwExcepion 所以两个方法结合使用抛出异常代码为:
Config.MESSAGE 为系统的配置文件Config的调用。一般系统中配置信息统一通过静态变量配置Config类中。(例如: public static final String MESSAGE = "resources.messages";)
结合使用方法:
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 213,
null));
以下是两个方法的源代码:
/**
* 创建错误结果
* @param MESSAGE
* @return
*/
public static ResultInfocreateFail(String fileName,int messageCode,Object[] objs){
Stringmessage=null;
if(objs == null){
message= ResourcesUtil.getValue(fileName, messageCode+"");
}else{
message= ResourcesUtil.getValue(fileName, messageCode+"",objs);
}
return new ResultInfo(ResultInfo.TYPE_RESULT_FAIL,messageCode,message);
}
/**
* 抛出异常
* @param resultInfo
* @throwsExceptionResultInfo
*/
public static void throwExcepion(ResultInfo resultInfo) throwsExceptionResultInfo{
throw new ExceptionResultInfo(resultInfo);
}
public static void throwExcepion(ResultInfo resultInfo,List<ResultInfo> details) throwsExceptionResultInfo{
if(resultInfo != null){
resultInfo.setDetails(details);
}
throw new ExceptionResultInfo(resultInfo);
}