目录:

1、信息国际化

2、异常国际化

3、使用方法

4、完整样例代码

内容:

1、信息国际化

首先,定义相关的properties文件,

如LocalStrings_zh_CN.properties:

EXP=\u5F02\u5E38\u56FD\u9645\u5316\u6D4B\u8BD5\!

如LocalStrings_en_US.properties:

EXP=EXP+{0}+INFO

然后,定义读取相关properties文件并匹配正确数据的Java类,该类主要包含的功能有:

a、通过ResourceBundle读取properties文件中的国际化信息,如:

ResourceBundle.getBundle(bundleName, locale, Thread.currentThread().getContextClassLoader());

b、通过 ResourceBundle提供的方法进行数据读取,如:

bundle.getString(key);

c、通过MessageFormat类替换读取到的数据中的变量,变量的存放格式是{0}、{1}...,如:

MessageFormat mf = new MessageFormat(key);mf.setLocale(locale);mf.applyPattern(key);mf.format(args);

2、异常国际化

    异常的国际化是基于信息的国际化来完成的,同时也需要我们扩展运行时异常,为异常增加必要的参数,如:

package org.exception;import org.i18n.MessageBundle;/*** 自定义异常类* * @author orientalpigeon* */
public class CustomException extends RuntimeException{private static final long serialVersionUID = -2804635153565996548L;private String code = null;private Object[] arguments = null;public CustomException(String code){this.code = code;}public CustomException(String code,Object[] arguments){this.code = code;this.arguments = arguments;}public CustomException(String code,Object[] arguments,Throwable cause){super(cause);this.code = code;this.arguments = arguments;}public String getCode(){return this.code;}public String getMessage(){return MessageBundle.getMessage(this.code, this.arguments);}}

通过上面定义,便可以通过CustomException异常类的getMessage()方法获取到对应的国际化异常信息。

3、使用方法

a、信息国际化

assertEquals(MessageBundle.getMessage("EXP"), "异常国际化测试!");//设置英文locale对象CustomContext.getInstance().setLocale(new Locale("en","US"));//国际化信息中含有中变量assertEquals(MessageBundle.getMessage("EXP",new Object[]{"en_US"}), "EXP+en_US+INFO");

b、异常国际化

不需要替换变量异常信息:

try{throw new CustomException("EXP");
}catch (CustomException e) {assertEquals(e.getCode(), "EXP");assertEquals(e.getMessage(), "异常国际化测试!");
}

需要替换变量的异常信息:

try{//设置英文locale对象CustomContext.getInstance().setLocale(new Locale("en","US"));//国际化信息中含有中变量throw new CustomException("EXP",new Object[]{"en_US"});
}catch (CustomException e) {assertEquals(e.getCode(), "EXP");assertEquals(e.getMessage(), "EXP+en_US+INFO");
}

4、完整样例代码

   见附件。

异常、信息国际化样例相关推荐

  1. java 异常国际化_基于springboot实现http响应异常信息国际化

    背景 国际化是指在设计软件,将软件与特定语言及地区脱钩的过程.当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正. 本文提到的异常响应信息国际化是指:前端向后台发起请求,后台在处理 ...

  2. Spring i18n 国际化样例

    网上有很多Spring国际化的样例,但是缺少详细的样例.特别是国外网上很多是Spring MVC(Web)之类的样例,而国内稍具规模的软件开发组织都采用前后端分离的模式,所以几乎很少有易于模仿的 纯基 ...

  3. 问答Goodfellow:没有样例能不能训练机器学习算法?

    李杉 编译整理 量子位 出品 | 公众号 QbitAI 从图像和语音识别到自然语言分析,神经网络已经在很多领域大展身手.过去几年,它们的精确度已经几乎可以与人类媲美.但仍有很多神经网络无法完成的任务- ...

  4. Spring MVC异常统一处理(异常信息的国际化,日志记录)

    JAVA EE项目中,不管是对底层的数据操作,还是业务层的处理过程,还是控制层的处理,都不可避免的会遇到各种可预知的(业务异常主动抛出).不可预知的异常需要处理.一般dao层.service层的异常都 ...

  5. 【问题描述】3.1.5 用整数1~7依次表示星期一至星期日。由键盘输入一个整数,输出对应的英文表示,如果输入的整数在1~7之外,输出“Error”信息。【样例输入1】1【样例输出1】Monda

    [问题描述]3.1.5 用整数1~7依次表示星期一至星期日.由键盘输入一个整数,输出对应的英文表示,如果输入的整数在1~7之外,输出"Error"信息. [样例输入1]1 [样例输 ...

  6. GDB调试core文件样例(如何定位Segment fault)

    core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (Linux中如果内存越界会收到SIG ...

  7. 获取异常信息_如何在 ASP.NET Core 中实现全局异常拦截

    异常是一种运行时错误,当异常没有得到适当的处理,很可能会导致你的程序意外终止,这篇就来讨论一下如何在 ASP.Net Core MVC 中实现全局异常处理,我会用一些 样例代码 和 截图 来说明这些概 ...

  8. idea内存溢出解决_各种OOM代码样例及解决方法

    针对目前大家对OOM的类型不太熟悉,那么来总结一下各种OOM出现的情况以及解决方法.把各种OOM的情况列出来,然后逐一进行代码编写复现和提供解决方法. 1. 堆溢出-java.lang.OutOfMe ...

  9. Java 8 时间日期库的20个使用演示样例

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...

最新文章

  1. [SPOJ 687]Repeats
  2. jsp页面怎么调用的servlet
  3. 《Linux菜鸟入门》Linux网络管理
  4. android自定义绘制二叉树,安卓数据结构04-二叉树
  5. python itchat 的使用
  6. [Python]两个list对应元素操作(相减)
  7. python实现两张图片横向和纵向拼接
  8. char*转wstring
  9. 世界杯足球竞赛源码下载
  10. 数据分析 | 基于智能标签,精准管理数据
  11. noip2016的研究
  12. Linux 命令(90)—— which 命令
  13. 剑指offer面试题48. 最长不含重复字符的子字符串(滑动窗口)
  14. 用java求解八枚银币问题_算法笔记_004:8枚硬币问题【减治法】
  15. ASP.NET 2.0 探针
  16. 微信小程序获取数据并展示
  17. 前端第二章:6.浏览器的自动修复机制;网页布局 (header标签、main标签、footer标签;nav标签;aside标签)
  18. MacBook苹果系统下安装Windows XP双系统多分区问题解决
  19. win10系统查看占用端口
  20. 用python来做一个APP | python GUI 基础(实战)

热门文章

  1. 表格新增的属性及高级表单
  2. SynthText文本数据详细解析
  3. 华为交换机导入配置_将一个华为交换机的配置导入另一个已有配置的交换机中...
  4. 毕业设计-基于微信小程序的工单智能管理系统
  5. 【无标题】ChatGPT的官网是多少,在国内能使用吗
  6. 架构师之路工作量化与细化
  7. 软件测试周刊(第71期):大悲时不发言,大怒时不争辩,大喜时不许诺。
  8. 研究生最全文献查询、下载网站汇总,汇集各个专业权威国外网站!
  9. typescript 的认识3
  10. 微信小程序——给用户发送通知