提示信息国际化配置

来源:互联网 发布:知行论坛北交大 编辑:程序博客网 时间:2024/05/29 13:12

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

      

       //加载国际化资源(classpathresources目录下的messages.properties,如果是中文环境会优先找messages_zh_CN.properties

       ResourceBundle rb = ResourceBundle.getBundle("resources.messages", locale);

       String retValue = rb.getString("101");//101messages.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 (主要方法四个)

使用国际化工具取国际化信息并创建操作成功、操作失败、警告等结果对象。

 

方法如下:

      创建失败信息

publicstatic 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);

        }

        returnnewResultInfo(ResultInfo.TYPE_RESULT_FAIL,messageCode,message);

    }

 

       创建成功信息

 

publicstatic ResultInfo createSuccess(String fileName,intmessageCode,Object[] objs){

       

        Stringmessage=null;

        if(objs ==null){

           message= ResourcesUtil.getValue(fileName, messageCode+"");

        }else{

           message= ResourcesUtil.getValue(fileName, messageCode+"",objs);

        }

        returnnew ResultInfo(ResultInfo.TYPE_RESULT_SUCCESS,messageCode,message);

    }

 

      创建警告信息

publicstatic ResultInfo createWarning(String fileName,intmessageCode,Object[] objs){

        Stringmessage=null;

        if(objs ==null){

           message= ResourcesUtil.getValue(fileName, messageCode+"");

        }else{

           message= ResourcesUtil.getValue(fileName, messageCode+"",objs);

        }

        returnnewResultInfo(ResultInfo.TYPE_RESULT_WARN,messageCode,message);

}

 

 

 

 

      创建提交结果对象

publicstatic SubmitResultInfo createSubmitResult(ResultInforesultInfo){

       returnnew SubmitResultInfo(resultInfo);

    }

 

 

       创建异常结果对象

publicstatic void throwExcepion(ResultInfo resultInfo)throwsExceptionResultInfo{

       thrownew 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 staticfinal String MESSAGE ="resources.messages";)

 

结合使用方法:

ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 213,

                  null));

 

以下是两个方法的源代码:

  /**

     * 创建错误结果

     * @param MESSAGE

     * @return

     */

    publicstatic ResultInfocreateFail(String fileName,int messageCode,Object[] objs){

        Stringmessage=null;

        if(objs ==null){

           message= ResourcesUtil.getValue(fileName, messageCode+"");

        }else{

           message= ResourcesUtil.getValue(fileName, messageCode+"",objs);

        }

        returnnew ResultInfo(ResultInfo.TYPE_RESULT_FAIL,messageCode,message);

}

 

    /**

     * 抛出异常

     * @param resultInfo

     * @throwsExceptionResultInfo

     */

    publicstatic void throwExcepion(ResultInfo resultInfo)throwsExceptionResultInfo{

       thrownew ExceptionResultInfo(resultInfo);

    }

    publicstatic void throwExcepion(ResultInfo resultInfo,List<ResultInfo> details)throwsExceptionResultInfo{

       if(resultInfo !=null){

           resultInfo.setDetails(details);

       }

       thrownew ExceptionResultInfo(resultInfo);

    }

 

0 0
原创粉丝点击