工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 4226|回复: 3

spring入门之国际化支持

[复制链接]
发表于 2006-7-25 09:55 | 显示全部楼层 |阅读模式
仿造夏昕的《spring开发指南》第23页   国际化支持例子    发贴出来与大家共享   
BTW:请问,真是开发中,是用Struts国际化,还是用spring国际化,还是两者互相融合?


1,bean.xml   


  1. <?xml version="1.0" encoding="gb2312"?>

  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
  3.         "http://www.springframework.org/dtd/spring-beans.dtd">

  4. <beans>
  5.   <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
  6.         <property name="basenames">
  7.                 <list>
  8.                         <value>myMessages</value>
  9.                 </list>
  10.         </property>
  11. </bean>
  12. </beans>
复制代码


2,资源文件myMessage.properties

  1. userinfo=当前用户:[{0}],现在时间是:[{1}]
复制代码

通过JDK提供的转码工具native2ascii.exe进行转换,可得到
myMessage_zh.properties

  1. userinfo=\u5f53\u524d\u7528\u6237:[{0}],\u73b0\u5728\u65f6\u95f4\u662f\uff1a[{1}]
复制代码


再写一个英语版的资源文件
myMessage_en.properties

  1. userinfo=current user:[{0}],now is:[{1}]
复制代码
 楼主| 发表于 2006-7-25 10:03 | 显示全部楼层

最后,写一个测试类

3,测试类:SourceTest.java


  1. 1 package coffee;

  2. 2 import org.springframework.context.ApplicationContext;
  3. 3 import org.springframework.context.support.FileSystemXmlApplicationContext;
  4. 4 import java.util.*;

  5. 5 public class SourceTest
  6. 6 {
  7. 7         public static void main(String[] args)
  8. 8         {
  9. 9                 ApplicationContext ctx=new        FileSystemXmlApplicationContext("bean.xml");
  10. 10                Object[] obj = new Object[]{"coffee",new Date()};
  11. 11        //        String userinfo = ctx.getMessage("userinfo", obj,Locale.getDefault());
  12. 12                String userinfo = ctx.getMessage("userinfo", obj,Locale.US);
  13. 13                System.out.println(userinfo);
  14. 14        }
  15. 15 }
复制代码


注:代码前面的数字,只是为了方便说明而添加的,不是程序中的代码。
        现在是把第11行代码注释掉,运行结果显示的是英文;
      
  1. current user:[coffee],now is:[7/25/06 10:06 AM]
复制代码

        如果保留第11行代码,而是把第12行代码注释掉,显示结果是中文的:

  1. 当前用户:[coffee],现在时间是:[06-7-25 上午10:07]
复制代码

[ 本帖最后由 深圳情缘 于 2006-7-25 10:18 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2006-7-25 10:17 | 显示全部楼层

至于对于代码的解释,不烦稍加修改夏昕同志的书

这里声明了一个名为messageSource的Bean(注意对于Message定义,Bean ID必须为
messageSource,这是目前Spring的编码规约),对应类为ResourceBundleMessageSource,
目前Spring中提供了两个MessageSource接口的实现,即
ResourceBundleMessageSource和ReloadableResourceBundleMessageSource,后
者提供了无需重启即可重新加载配置信息的特性。
在配置节点中,我们指定了一个配置名“myMessages”。


这里,getMessage方法根据指定编码“Locale.US”加载了myMessages_en.properties文件。同
时请注意登录时间部分的变化(Locale不同,时间的输出格式也随之改变)。

  1. String userinfo = ctx.getMessage("userinfo", obj,Locale.getDefault());
复制代码

在原文中,作者的getMessage方法传入的参数是前面两个,我试过了,后面的Locale必须提供,否则出错
  作者所说的是不需要提供最后一个参数,默认是系统语言,但实际上是需要提供的,默认的话也需要显示提供
  Locale.getDefault()   
  估计是因为Spring版本不同而导致的错误,因为我用的是最新版1.2.8版本
   也有可能是电子书制作方面出的问题,我看的是网上下载的电子版的PDF,一直不知道哪本好,所以先下载了来看看,spring开发指南,篇幅虽小,写的还真不错,浅显易懂,很适合我们入门的指导书。
回复

使用道具 举报

发表于 2006-8-11 09:23 | 显示全部楼层
感谢楼主分享,我也正在试着看这个文档,感觉不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-5-13 03:01

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表