com/javacode2018/lesson002/demo19/
message.properties
name=您的姓名
personal_introduction=默认个人介绍:{0},{1}
这个文件名称没有指定Local信息,当系统找不到的时候会使用这个默认的
message_zh_CN.properties:中文【中国】
name=姓名
personal_introduction=个人介绍:{0},{1},{0}
message_en_GB.properties:英文【英国】
name=Full name
personal_introduction=personal_introduction:{0},{1},{0}
spring中注册国际化的bean
注意必须是MessageSource类型的,bean名称必须为messageSource,此处我们就使用ResourceBundleMessageSource这个类
package com.javacode2018.lesson002.test19.demo1;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
@Configuration
public class MainConfig1 {
@Bean
public ResourceBundleMessageSource messageSource() {
ResourceBundleMessageSource result = new ResourceBundleMessageSource();
//可以指定国际化化配置文件的位置,格式:路径/文件名称,注意不包含【语言_国家.properties】含这部分
result.setBasenames(“com/javacode2018/lesson002/demo19/message”); //@1
return result;
}
}
@1:这个地方的写法需要注意,可以指定国际化化配置文件的位置,格式:路径/文件名称,注意不包含**【语言_国家.properties】**含这部分
来个测试用例
package com.javacode2018.lesson002.test19;
import com.javacode2018.lesson002.test19.demo1.MainConfig1;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.Locale;
public class MessageSourceTest {
@Test
public void test1() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.register(MainConfig1.class);
context.refresh();
//未指定Locale,此时系统会取默认的locale对象,本地默认的值中文【中国】,即:zh_CN
System.out.println(context.getMessage(“name”, null, null));
System.out.println(context.getMessage(“name”, null, Locale.CHINA)); //CHINA对应:zh_CN
System.out.println(context.getMessage(“name”, null, Locale.UK)); //UK对应en_GB
}
}
运行输出
您的姓名
您的姓名
Full name
第一行未指定Locale,此时系统会取默认的locale对象,本地默认的值中文【中国】,即:zh_CN,所以会获取到
message_zh_CN.properties
中的内容。
后面2行,都指定了Locale对象,找到对应的国际化文件,取值。
动态参数使用
注意配置文件中的personal_introduction
,个人介绍,比较特别,包含了{0},{1},{0}
这样一部分内容,这个就是动态参数,调用getMessage
的时候,通过第二个参数传递过去,来看一下用法:
@Test
public void test2() {
AnnotationConfigApplicati