Spring的MVC模式I18N的配置及使用方法

Spring的MVC模式I18N的配置及使用方法
某个加载xml配置文件配置,如bean.xml。
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>messages</value>
</list>
</property>
</bean>

通过上下文可以调用getMessage来实现I18N。(一种直接加载message上下文的方法:ApplicationContext ctx=new FileSystemXmlApplicationContext("bean.xml");)
Object[] arg = new Object[]{};
//以系统默认Locale加载信息(对于中文WinXP而言,默认为zh_CN)
String msg = ctx.getMessage("userinfo", arg, Locale.zh_CN);
System.out.println("Message is ===> "+msg);
代码中,我们将一个Object数组arg作为参数传递给ApplicationContext.getMessage方法,这个
参数中包含了出现在最终文字信息中的可变内容,ApplicationContext将根据参数中的Locale信息对其进
行处理(如针对不同Locale设定日期输出格式),并用其替换配置文件中的{n}标识(n代表参数数组中的
索引,从1开始)。

注意转码过程中产生的编码问题,一种比较简单的解决办法是通过JDK提供的转码工具native2ascii.exe进行转换。执行:
native2ascii messages_zh_CN.properties msg.txt

再用msg.txt文件替换Messages_zh_CN.properties文件。我们可以看到现在的
Messages_zh_CN.properties变成了如下形式:
userinfo=\u5f53\u524d\u767b\u5f55\u7528\u6237: [{0}]\u767b\u5f55\u65f6\u95f4:[{1}]
(通过在native2ascii命令后追加-reverse参数,可以将文件转回本地格式)
实际开发中,我们可以通过Apache Ant的Native2Ascii任务进行批量转码。如:
<native2ascii encoding="GBK" src="${src}" dest="${build}"/>
getMessage方法还有一个无需Locale参数的版本,JVM会根据当前系统的Locale设定进行相应处
理。可以通过在JVM启动参数中追加“-Duser.language=en”来设定当前JVM语言类型,通过JVM级的
设定,结合国际化支持功能,我们可以较为简单的实现多国语言系统的自动部署切换。
也可以通过资源访问的方式来实现对属性设置的访问。ApplicationContext.getResource方法提供了对资源文件访问支持,如:
Resource rs = ctx.getResource("classpath:config.properties");
File file = rs.getFile();
上例从CLASSPATH根路径中查找config.properties文件并获取其文件句柄。
getResource方法的参数为一个资源访问地址,如:
file:C:/config.properties
/config.properties
classpath:config.properties
注意getResource返回的Resource并不一定实际存在,可以通过Resource.exists()方法对其进行判断。
而在页面处理中,也可以用到i18n的信息串。
jsp中使用i18n的message:
<spring:message code="msg_code"/>

本文转自 dannyy1026 51CTO博客,原文链接:http://blog.51cto.com/dannyyuan/160495
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值