您的位置:首页 > 其它

提示信息国际化配置

2015-10-31 23:31 232 查看

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
new
ResultInfo(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
new
ResultInfo(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);
    }

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  国际化 提示信息