Spring应用【1】MessageSource的使用

104 阅读1分钟

通过MessageSource接口实现国际化

国际化简单来说就是在不修改内部代码的情况下,根据不同语言及地区显示相应的语言。

加载ApplicationContext时,自动搜索上下文中定义的MessagesSource Bean(名称必须为messageSource)。如果无法找到消息的任何源,则实例化一个空的messageSource。

/* 注入MessageSource */
@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource source = new ResourceBundleMessageSource();
    source.setBasenames("i18n/message");
    return source;
}

在类路径下的i18n下创建message_zh_CN.properties、message_en_US.properties

message_en_US.properties内容

argument.required=The {0} argument is required.

message_zh_CN.properties内容

argument.required=需要参数:{0}!

这两个文件表示US和CN地区显示的消息,如果想添加更多,新建message_xxx.properties即可,具体可查看Java.util.Locel类

测试效果:

/* The loginName argument is required. */
System.out.println(context.getMessage("argument.required",
                new Object[]{"loginName"}, Locale.US));
/* 需要参数:登录名! */
System.out.println(context.getMessage("argument.required",
                new Object[]{"登录名"}, Locale.getDefault()));