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 登入
相关推荐
NULL 博文链接:https://tgwall163.iteye.com/blog/1413575
<s:i18n name="messageResource"> <s:text name="label.helloWorld"></s:text> 指定在从messageResource取资源 4) 读取参数变量 <s:param>Jia Xiaoyuan 使用带参数的资源,可以替换label.hello=hello {0}中的...
1.ApplicationContext接口继承了MessageResource接口,因此使用ApplicationContext作为spring容器可以使用国际化资源文件。 2.在MessageResource接口中定义了两个主要用于国际化的方法: String getMessage(String ...
│ messageResource_zh_CN.properties │ spring.xml │ struts.xml │ ├─28个java常用的工具类 │ │ Base64.java │ │ Base64DecodingException.java │ │ CConst.java │ │ CharTools.java │ │ ...
: { " content " : " Hello $name " }} 此外,该服务必须满足以下要求: 代码必须存储在 github 上并位于此存储库的分支中代码必须用java编写Maven用于构建项目并生成war文件Jetty 用作 Web 服务器REST 接口由 ...
代码挑战 ... 生成带有标题 Content-Type: application/json 和 JSON 负载的响应: { " message " : { " content " : ...它必须有一个包含 REST API 定义的类MessageResource和一个执行逻辑的MessageService类。 它必须
Message-Poster - REST Web 服务,它: 1) 允许用户发布消息 ...中间消息资源模块 (com.ameyamm.model.MessageResource) 充当控制器和数据库模块之间的中介。 数据库模块,它是实际的数据库。 我使用 PostGreSQL
短信语音PythonSDK 安装 下载源代码,然后运行: python setup.py install 例子 这是使用Message API的示例 from otsdc . rest .... messageResource ( stat , resp ) = msg . send ( '9627xxxxxxx' ,