Spring国际化,意味着将程序中的字符串,统一写到不同语言的配置文件中,然后在程序运行期间,读取不同的配置语言文件,从而获取不同支持语言的字符用于程序中。具体需要如下设置:
1,配置applicationContext.xml文件。下面是一个例子:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<!-- basenames确定资源文件名 -->
<property name="basenames">
<list>
<value>lang</value>
</list>
</property>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
</beans>
2,创建词库配置文件。文件名称必须符合语言要求,比如lang_zh_CN.properties。其中lang就是上面代码中,标签basenames的值。需要几种语言支持,就需要几个文件,Idea会自动把语言配置文件归类到Resource Bundle包中,比如:
另外一点需要注意的是,每个properties文件的编码格式一定要是UTF-8,否则Spring无法正确读取到字符。
3,创建测试类,读取字符:
@Test
public void fun(){
ApplicationContext app= new ClassPathXmlApplicationContext("internationnalityContext.xml");
//读取英文字符
String mes=app.getMessage("message",null,"default",Locale.US);
//读取中文字符
String mess=app.getMessage("message",null,"default",Locale.SIMPLIFIED_CHINESE);
//读取日文字符
String messa=app.getMessage("message",null,"default",Locale.JAPAN);
System.out.println(messa);
}
输出结果如下: