<?xml version="1.0" encoding="UTF-8"?>basename属性用来设定讯息资源的前置文件名称,在这边设定是messages,则讯息资源文件的名称可以是 messages_en_US.properties、messages_zh_TW.properties、 messages_*.properties等等名称,在这边提供两个:messages_en_US.properties、 messages_zh_TW.properties,首先messages_en_US.properties内容如下:
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>messages</value>
</property>
</bean>
</beans>
userLogin=User {0} login at {1}
userLogin=使用者 {0} 于 {1} 登入其中{0}与{1}是可以在程序执行过程中设定的占位字符,ResourceBundleMessageSource实际上会使用JDK的 ResourceBundle来读取这些文件,而中文在编码过程中会发生问题,为了要能正确的显示中文,我们必须对 message_zh_TW.properties进行编码转换,使用JDK工具中的native2ascii即可:
native2ascii messages_zh_TW.properties messages_zh_TW.txt之后将messages_zh_TW.txt覆盖(替换)掉messages_zh_TW.properties就可以了。
package onlyfun.caterpillar;透过设定参数并指定Locale,使用getMessage()设定对应的讯息,这个测试程序结果会显示以下的内容:
import java.util.Calendar;
import java.util.Locale;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringDemo {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("beans-config.xml");
Object[] arguments =
new Object[] {"良葛格", Calendar.getInstance().getTime()};
System.out.println(
context.getMessage("userLogin", arguments, Locale.US));
System.out.println(
context.getMessage("userLogin", arguments, Locale.TAIWAN));
}
}
User 良葛格 login at 10/28/05 8:24 PM 使用者 良葛格 于 2005/10/28 下午 8:24 登入