一. Strut2实现国际化
Struts2实现国际化可以在前端实现,也可以在后端进行相应的实现。
一般国际化的都是前端的显示标签和后端传递过来的提示信息,一般采用前端国际化的多一些。
在前端国际化时,用一个登录表单的页面来进行相应的说明。
需要先搭建一个基本的Struts的运行环境,包括struts.xml和web.xml的配置)
在src 下有三个国际化文件, i18n.properties, i18n_en_US.properties文件,i18n_zh_CN.properties 文件。
其中,i18n_zh_CN.properties 文件的内容,与i18n.properties的文件内容相同。
默认是中文的。
一.一 利用<s:text> 标签 实际国际化
1.首先根据前端的页面标签和提示信息,将国际化内容大致提取出来,放置在国际化的属性文件中。
将属性文件中的key 按照i18n.模块.标签的方式进行命名。
一.一.一 i18n_zh_CN.properties 属性文件
zh_CN中文与默认的一致,内容均为:
###下面是登录表单login.jsp的国际化配置 ###登录页面 i18n.login.title=\u767b\u5f55\u9875\u9762 ###用户名 i18n.login.userName=\u7528\u6237\u540d ###密码 i18n.login.password=\u5bc6\u7801 ###登陆 i18n.login.submit=\u767b\u9646 ###重置 i18n.login.reset=\u91cd\u7f6e ###下面是登录成功表单success.jsp的国际化配置 ###带参数传递,欢迎{0}登录,性别是{1},年龄{2} i18n.success.welcome=\u6b22\u8fce\u007b\u0030\u007d\u767b\u5f55\u002c\u6027\u522b\u662f\u007b\u0031\u007d\u002c\u5e74\u9f84\u007b\u0032\u007d
一.一.二 i18n_en_US.properties 属性文件
en_US英文为:
###下面是登录表单login.jsp的国际化配置 ###登录页面 i18n.login.title=login page ###用户名 i18n.login.userName=userName ###密码 i18n.login.password=password ###登陆 i18n.login.submit=login ###重置 i18n.login.reset=reset ###下面是登录成功表单success.jsp的国际化配置 ###带参数 i18n.success.welcome=Welcome {0} login,sex is {1},age is{2}
一.一. 三 配置struts.xml 文件 ,添加 struts.custom.i18n.resources 变量
在Struts.xml中配置资源所在的路径,value的值为 国际化文件的名称。
(必须配置,否则找不到文件在哪儿)
<!-- 添加国际化的资源所在的位置 --> <constant name="struts.custom.i18n.resources" value="i18n"></constant>
一.一.四 编写前端 /content/login.jsp 文件
需要将内容和提示信息都换成<s:text name=“key”>的形式。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title><s:text name="i18n.login.title"/></title> </head> <body> <s:form action="User_login.action" namespace="/" method="post"> <s:text name="i18n.login.userName"/>: <s:textfield name="name"/> <br/> <s:text name="i18n.login.password"/>: <s:password name="password"/><br/> <input type="submit" value="<s:text name='i18n.login.submit'></s:text>"/> <input type="reset" value="<s:text name='i18n.login.reset'></s:text>"/> </s:form> </body> </html>
注意,<s:submit>是无法使用的,改成标准的html标签即可。
也可以使用<s:set> 先setter值,然后再取出。
用getText()方式来获取。
<s:set var="submit" value="getText('i18n.login.submit')"/> <s:submit value="%{submit}"></s:submit>
一.一.五 编写前端 /content/success.jsp 页面
对于占位符填充的国际化,可以用 <s:param> 传递占位符参数。
如:成功 /content/success.jsp 界面,填充参数。
<s:text name="i18n.success.welcome"> <s:param name="0">蝴蝶飞</s:param> <s:param name="1">男</s:param> <s:param name="2">24</s:param> </s:text>
一.六 重启服务器,进行验证
一.六.一 中文环境
输入网址: http://localhost:8080/Struts_i18n/login , 会跳转到 login.jsp 页面
输入网址: http://localhost:8080/Struts_i18n/success, 会跳转到 success.jsp 页面
一.六.二 英文环境
现在改变成英文状态, goole浏览器改变settings,高级选择语言,添加美国英语,并将其选择为浏览器语言,并move to up,移动到最上面
输入网址: http://localhost:8080/Struts_i18n/login , 会跳转到 login.jsp 页面
输入网址: http://localhost:8080/Struts_i18n/success, 会跳转到 success.jsp 页面