Spring中国际化
spring中国际化是通过MessageSource这个接口来支持的
org.springframework.context.MessageSource
内部有3个常用的方法用来获取国际化信息,来看一下
public interface MessageSource {
/**
* 获取国际化信息
* @param code 表示国际化资源中的属性名;
* @param args用于传递格式化串占位符所用的运行期参数;
* @param defaultMessage 当在资源找不到对应属性名时,返回defaultMessage参数所指定的默认信息;
* @param locale 表示本地化对象
*/
@Nullable
String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale);
/**
* 与上面的方法类似,只不过在找不到资源中对应的属性名时,直接抛出NoSuchMessageException异常
*/
String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException;
/**
* @param MessageSourceResolvable 将属性名、参数数组以及默认信息封装起来,它的功能和第一个方法相同
*/
String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException;
}
常见3个实现类
ResourceBundleMessageSource
这个是基于Java的ResourceBundle基础类实现,允许仅通过资源名加载国际化资源
ReloadableResourceBundleMessageSource
这个功能和第一个类的功能类似,多了定时刷新功能,允许在不重启系统的情况下,更新资源的信息
StaticMessageSource
它允许通过编程的方式提供国际化信息,一会我们可以通过这个来实现db中存储国际化信息的功能。
Spring中使用国际化的3个步骤
通常我们使用spring的时候,都会使用带有ApplicationContext字样的spring容器,这些容器一般是继承了AbstractApplicationContext接口,而这个接口实现了上面说的国际化接口MessageSource,所以通常我们用到的ApplicationContext类型的容器都自带了国际化的功能。
通常我们在ApplicationContext类型的容器中使用国际化3个步骤
步骤一:创建国际化文件
步骤二:向容器中注册一个MessageSource类型的bean,bean名称必须为:messageSource
步骤三:调用AbstractApplicationContext中的getMessage来获取国际化信息,其内部将交给第二步中注册的messageSource名称的bean进行处理
栗子
- 创建国际化文件
国际化文件命名格式:名称_语言_地区.properties
message.properties
name=您的姓名
personal_introduction=默认个人介绍:{
0},{
1}
这个文件名称没有指定Local信息,当系统找不到的时候会使用这个默认的
message_cn_ZH.properties:中文【中国】
name=姓名
personal_introduction=个人介绍:{
0},{
1},{
0}
message_en_GB.properties:英文【英国】
name=Full name
personal_introduction=personal_introduction:{
0},{

最低0.47元/天 解锁文章
416

被折叠的 条评论
为什么被折叠?



