以前一直看见 i18N ,现在才知道原来 i18N 就是 Internationalization,因为以 i 开头,以 N 结尾,共18个字母,也就是国际化的意思。那么怎样通过struts2实现国际化支持呢?
第一步:在src目录下添加两个资源文件,命名方式很重要的。
格式:baseName_language_country.properties。还有两种命名方式,都可以的,这个不用过多研究。比如,实现中英文切换我们要添加 globalMessages_zh_CN.properties 和globalMessages_en_US.properties。然后将各个key-value对添加到这两个文件中,key字段一定要统一。如:
其中,value值可以使用占位符,比如:你好{0},至于怎么传参数,稍后再解释。
第二步:在struts.xml文件的struts标签里加入如下代码:
<constant name="struts.custom.i18n.resources" value="globalMessages"/> <constant name="struts.i18n.encoding" value="UTF-8" />
在jsp中使用
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- 加载struts2标签库 --> <%@ taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <base href="<%=basePath%>"> <s:head/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title><s:text name="loginPage"/></title> </head> <body> <a href="register?request_locale=zh_CN">中文</a> <a href="register?request_locale=en_US">English</a> <s:form action="register" method="post"> <%-- <s:i18n>标签是用来从声明的资源包获得消息, 不只是使用当前操作相关联的资源包。properties文件的名称可以是任意的 name属性指定properties文件的名称 --%> s:i18n标签取出国际化内容:<s:i18n name="globalMessages"> <s:text name="loginPage"/> </s:i18n> <br/> s:test标签取出国际化内容:<s:text name="loginPage"/> <s:textfield key="email" name="email"></s:textfield> <s:textfield key="password" name="password"></s:textfield> <s:textfield key="repassword" name="repassword"></s:textfield> <s:textfield key="phone" name="phone"></s:textfield> <s:submit key="submit"></s:submit> </s:form> </body> </html>
效果展示:
输出带占位符的信息。如,有一个 HelloWorld=Hello World{0},那么可以用下面这种方式来显示:
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>注册成功</title> </head> <body> <s:text name="HelloWorld"><s:param><s:property value="email"/></s:param></s:text> </body> </html>
效果展示:
参考资料:
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/11185.html