Strurs2 国际化I18N
一:基础配置
1. 要使用Struts2来实现国际化的支持,同样先来准备国际化信息资源文件
message.properties
message_zh_CN.properties
message_en_US.properties
2.设置Struts2引用国际化信息资源文件,
(方法1):在struts.xml中设置一个常量:
<constant name="struts.custom.i18n.resources" value="message"/>
(方法二):在struts.properties中配置如下参数
struts.custom.i18n.resources= message
3.在jsp中访问国际化资源
可以直接选用Struts2的text标签来访问国际化信息,其中text标签的name属性就是要引用哪个key。
1. <%@ taglib prefix="s" uri="/struts-tags" %>
2. <s:text name="labela"/>
二:指定语言信息的不同方式
方法一:指定浏览器使用的语种
首先要去掉struts.xml或struts.properties文件中配置的如下参数
1. <constant name="struts.locale" value="zh_CN"/>
2. <constant name="struts.i18n.encoding" value="gb2312"/>
设置浏览器语言:工具==》Internet选项==》语言,通过添加、上、下移操作,将预使用的语言放在最上边
则重新访问网页,则会使用当前浏览器设置的语言对应的国际化配置信息。
方法二:struts2常量设置
在struts.xml中加上struts.locale这个常量
<constant name="struts.locale" value="zh_CN"/>
这时候,会发现无论怎么修改浏览器的语言设置,Struts2都会去访问中文信息了
方法三:请求加上request_locale=zh_CN参数
注意:该请求必须要经过struts的i18n拦截器,否则无效
也可以直接设置session
Locale local = new Locale("zh", "CN");
session.setAttribute("WW_TRANS_I18N_LOCALE", local);
i18n拦截器在Action运行之前会检查请求中是否包含了一个叫做“request_locale”的参数,如果存在此参数,则会用它的值建立一个Locale对象,并用这个Locale对象去覆盖Struts2的常量设置和浏览器的语言设置。除此之外,i18n拦截器还会把这个Locale对象放到名为WW_TRANS_I18N_LOCALE的Session属性中去,而这个属性也会覆盖Struts2的常量设置和浏览器的语言设置。因此,只需要传入一次request_locale参数,session就会记住用户的选择,整个网站就会都变成用户选择的语言了。
三种方式的覆盖方式
优先级如下:
用户指定参数>struts.xml中配置的常量>浏览器设置。
并且用户参数指定的方式,只需要设置一次,在整个session生命周期内都使用同样的语言。
S2SH项目中Action、Service、Dao各层如何获得struts2的国际化资源
S2SH项目中Action、Service、Dao各层如何获得struts2的国际化资源
Action:action可以继承ActionSupport,可以直接调用getText()方法获得
Service、Dao 层:无法通过Action的方法获得Struts2的i18n资源文件中的内容
思考:因为同一个session的国际化相同,可以借助java.util. ResourceBundle资源包,在session创建时,根据语言信息创建ResourceBundle对象,然后将其存放到session中,以后就可以通过session获得国际化资源信息。
主要代码如下
1.创建放入session中的对象
public class SessionData {
private String language;
//国际化资源包
private ResourceBundle rb;
public void setLanguage(String language) {
Locale locale = null;
if ("zh".equals(language)) {
locale = new Locale("zh", "CN");
} else {
locale = new Locale("en", "US");
}
ResourceBundle rb = ResourceBundle.getBundle("sourceName", locale);
this.rb = rb;
this.language = language;
}
//getter方法略......
}
2.将国际化资源信息通过ResourceBundle资源包放入当前session中
public String login (){
//......
String language = request.getParameter("local");
//可以获得语言信息或者可以获得Local信 息(假如用local对象,则上边setLanguage()方法适当调整下即可)
SessionData sessionData =
(SessionData)request.getSession ().getAttribute (“SessionData”);
if (sessionData == null) {
sessionData = new SessionData();
request.getSession().setAttribute(“SessionData”, sessionData);
}
//这句代码将资源文件信息放入到session中
sessionData.setLanguage(loc.getLanguage());
//......
}
3.编写公用方法,获得国际化资源文件的指定键的内容
public class I18nUtil {
//根据键key获得国际化资源文件sourceName中的值
public static String getText (String key) {
String value = "";
SessionData sd = (SessionData) ServletActionContext.getRequest()
.getSession().getAttribute(“SessionData”);
value = sd.getRb().getString(key);
return value;
}
}
4.service、Dao层使用
I18nUtil.getExceptionText(key)
<!--EndFragment-->
相关推荐
struts2i18n.rar struts2 i18n的实例, 环境是myeclipse6. struts2.16. struts国际化。
非常清晰可用的struts2 i18n国际化实例,非常适合初学者,不会让大家失望的,有问题还请求指教,大家互相学习,谢谢
一个超级简单的Struts2国际化demo
struts_I18N的包,已经用jar打包好了,直接用
struts2 中际化示例,加上s2sh所需的Jar就可以运行!如果不行留言,把demo发给你! 示例图:http://blog.csdn.net/liuc0317/archive/2010/12/01/6048552.aspx
struts2国际化_i18n 完整实例。欢迎下载。
struts1中实现了国际化(i18n)的登陆界面
自己写的 本人也是刚刚接触struts2 所以写的东西比较适合刚刚接触struts2的新人。。
struts2 国际化 i18n struts2 国际化 i18n struts2 国际化 i18n
博文链接:https://zhengdl126.iteye.com/blog/413021
用MyEclipse工具实现的一个struts2国际化,用于刚接解struts2中i18n的同学学习。很好的代码,深入浅出。
根据不同的语言环境,读取不同的本地资源文件,自动实现本地化。
基于Struts2技术的i18n,Web项目的国际化,能够生成,中,日,英三种语言
NULL 博文链接:https://zhouxianglh.iteye.com/blog/521629
i18n Locale ResourceBundle MessageFormat 使用例子 在struts2学习开始前需要普及的知识点
这是学习struts2时记得重点笔记,包括了一些原理,ognl语句的编写,以及如何设置拦截器等等一些基本知识,起到复习和巩固的作用
NULL 博文链接:https://tianzhuowan.iteye.com/blog/1275521
struts1的国际化,里面主要就是简单的介绍了一下国际化如何使用。
struts2四天的学习笔记。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。