在互联网中,有这么一句话,“网络没有国度”,这是什么意思,无论你是哪国人,哪个民族,你都能够通过网络来了解本地的信息,了解本国的信息,了解国际上的其它信息。作为我们IT开发人员,需要做的是什么,那就是让你的程序支持国际化,这是让你的产品走向世界的前提。
在Struts中,我们实现国际化(i18n,internationalization)支持,就需要在程序中使用编码支持,但是程序中的代码提示都是写死的,怎么让信息随语言改变而改变呢?有一种很简单的方法就是一个功能用不同的语言提示来书写,但无疑这是一种非常愚蠢的做法。最常用的也是比较简单的做法就是使用国际化资源文件来支持。
应该如何配置国际化资源文件来支持呢?
(1)在struts-config.xml中加入国际化支持语句:<message-resources parameter="resources.MessageResources" />这里resources是/src下的国际化资源文件包,而MessageResources是BaseName,基本名称。
(2)在src目录下面建立resources国际资源文件包,在该资源包下面建立MessageResources.properties,MessageResource_zh_CN.properties,MessageResource_en_US.properties,o.properties等国际化资源文件,这些资源文件的作用时,当我们在程序中需要硬编码时,就可以从这些国际化资源文件中读取对应的信息。
如何在JSP页面中输出国际化语言,以避免硬编码?
(1)使用<bean:message key=”value”/>
程序可以切换显示网页的语言的原理?
(1)struts利用在session中存放一个Locale对象来达到设置当前语言的目的。
(2)struts根据网页向后台提交时所包含的语言编码信息来提供缺省的Locale对象,这就是我们为什么可以通过更改网页显示语言设置,就能显示不同的语言文字的原因。
(3)struts在session中存放的这个Locale对象,取名为:Globals.LOCALE_KEY 的值,Globals是struts框架提供的一个对象
如何创建和传递消息对象?
ActionMessages messages=new
//设置国际化文本
ActionMessage message=new ActionMessage("login.success");
messages.add("login_success_1", message);
//传递国际化文本
this.saveMessages(request, messages);