2.7.3 输出国际化信息
为了让程序可以显示国际化信息,需要在JSP页面中输出key,而不是直接输出字符串常量。
Struts 2提供了如下三种方式来输出国际化信息。
<s:text name="messageKey"/>:使用s:text标签来输出国际化信息。
<s:property value='%{getText("messageKey")}'/>:使用表达式方式输出国际化信息。
对于表单标签,使用key属性代替label属性来指定国际化信息的key。
因此,我们再次修改表现层的 JSP 页面,使用国际化标签输出国际化信息。修改后的loginForm.jsp页面代码如下。
程序清单:codes\02\2.7\struts2qsi18n\WEB-INF\content\loginForm.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html> <html> <head> <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" /> <meta http-equiv="Content-Type" content="text/html; charset=GBK" /> <title><s:property value="getText('loginPage')"/></title> </head> <body> <!-- 使用form标签生成表单--> <s:form action="login"> <!-- 生成一个用户名文本输入框 --> <s:textfield name="username" key="user"/> <!-- 生成一个密码文本输入框 --> <s:textfield name="password" key="pass"/> <!-- 生成一个提交按钮 --> <s:submit key="login"/> </s:form> </body> </html>
上面的JSP页面不再包含任何直接字符串,而是全部通过<s:text name="..."/>来输出国际化提示。对于表单控件,不再指定label属性,而是指定key属性,key属性值为国际化资源文件里对应的key。
再次在浏览器中浏览该页面,将看到与图2.7相同的界面。
重新设置浏览者所在的语言/区域选项,设置语言/区域选项请先进入“控制面板”,在控制面板中单击“区域和语言选项”,进入如图2.9所示的对话框。
图2.9 设置语言/区域选项
如果选择“英语(美国)”选项,然后单击“确定”按钮,将设置本地的语言环境为美国英语。再次向服务器请求loginForm.jsp页面,将看到如图2.10所示的页面。
图2.10 程序国际化的效果
如果我们使用Firefox浏览器来浏览该页面,则会发现该页面依然显示中文界面——这是因为Firefox的语言环境并不受Windows系统的控制。为了让Firefox也使用美国英语环境,单击Firefox浏览器菜单栏中的“工具→选项”菜单,将出现“选项”对话框,单击该对话框的“内容”Tab页,将看到如图2.11所示的界面。
图2.11 设置Firefox的语言环境
在图2.11所示的对话框中单击“选择”按钮,将出现“语言和字符编码”对话框,在该对话框下面的下拉列表框中选择“英语/美国 [en-us]”选项,如图2.12所示,然后单击下拉框右边的“添加”按钮,将添加“英语/美国”语言环境。在该对话框上面的列表框中选择“英语/美国 [en-us]”,然后单击“上移”按钮,将该选项移至最上面,让整个页面优先使用英语/美国语言环境。
图2.12 设置Firefox的语言环境为英语/美国
再次使用Firefox浏览器浏览loginForm.jsp页面,将看到该页面变成了英文界面。