Spring入门13 - MessageResource接口

入门 13 - MessageResource接口

ApplicationContext继承了org.springframework.context.MessageResource接口,您可以使用getMessage()的各个签署方法来取得讯息资源,从而实现国际化讯息的目的。

在这个主题中,我们简单的透过MessageResource的一个实作org.springframework.context.support.ResourceBundleMessageSource来取得国际化讯息,首先在Bean定义档中撰写:

<?xml version="1.0" encoding="UTF-8"?>

<!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>


basename属性用来设定讯息资源的前置文件名称,在这边设定是messages,则讯息资源文件的名称可以是 messages_en_US.properties、messages_zh_TW.properties、 messages_*.properties等等名称,在这边我们提供两个:messages_en_US.properties、 messages_zh_TW.properties,首先messages_en_US.properties内容如下:

userlogin=User {0} login at {1}


message_zh_TW.properties内容如下:

userlogin=使用者 {0} 于 {1} 登入


其中{0}与{1}是我们可以在程序执行过程中设定的参数。Spring实际上会使用JDK的ResourceBundle来读取这些文件,而中文在编码 过程中会发生问题,为了要能正确的显示中文,我们必须对message_zh_TW.properties进行编码转换,使用JDK工具中的 native2ascii即可:

native2ascii message_zh_TW.properties message_zh_TW.txt


之后将message_zh_TW.txt覆盖(替换)掉message_zh_TW.properties就可以了。

接下来撰写一个简单的测试程序:

package onlyfun.caterpillar;

 

import java.util.*;

import org.springframework.context.*;

import org.springframework.context.support.*;

 

public class Test {

    public static void main(String[] args) throws Exception {

        ApplicationContext context = new ClassPathXmlApplicationContext("bean.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));

    }

}


ClassPathXmlApplicationContext实作了ApplicationContext接口,我们使用其来读取Bean定义档,并返 回一个ApplicationContext接口的实例,透过设定参数并指定Locale,我们使用getMessage()设定对应的讯息,这个测试程式结果会显示以下的内容:

log4j:WARN No appenders could be found for logger (org.springframework.beans.factory.xml.XmlBeanDefinitionReader).

log4j:WARN Please initialize the log4j system properly.

User 良葛格 login at 10/28/04 12:52 PM

使用者 良葛格 于 2004/10/28 下午 12:52 登入

你可能感兴趣的:(Spring入门13 - MessageResource接口)