以前一直看见 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/tech/pnotes/11185.html