国际化可以使我们的网站切换为中英或其他的各国语言
Struts2中的国际化就是 i18n —— Internationalization(其实就是字母i和n之间有18个字母)
国际化的加入使得软件具备切换界面语言的功能同时也极大地简化国际化功能的实现。
国际化的实现
只需要通过一个简单的配置文件和一个Struts2的标签以及一个默认的i18n拦截器就可以实现了。
实现步骤:
第一步:在配置文件struts.xml中加入
<!--配置国际化支持--> <constant name="struts.custom.i18n.resources" value="message"/>第二步:在与 struts.xml 文件同目录下创建以下两个文件。
message_en_US. properties (配置英文信息,注意红色部分和在struts.xml中配置的value相同)
message_zh_CN. properties(配置中文信息,注意红色部分和在struts.xml中配置的value相同)
注意:这里的中文信息配置得使用ASCII码来配置
配置的中英文配置文件中的key值必须相同,其value值便使用其不同的语言编写
第三步:在jsp中使用struts的标签完成界面所有内容
<%-- Created by IntelliJ IDEA. User: icarus Date: 2016/7/2 Time: 11:16 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>index</title> </head> <body> <s:text name="login.title"/> <s:form action="ch06LoginAction" method="POST"> <s:textfield name="username" key="login.username"/> <s:password name="password" key="login.password"/> <s:token></s:token> <%--这里submit中的value的值不能按照以往的方式配置 这是struts2国际化的一个漏洞,不能使用key,而要使用value <s:submit key="login.submit"/> --%> <s:submit value="%{getText(login.submit)}"/> </s:form> <s:a href="ch06LoginAction.action?request_locale=zh_CN">中文</s:a> <s:a href="ch06LoginAction.action?request_locale=en_US">English</s:a> </body> </html>
注意:在Struts2国际化的时候,在submit提交表单标签当中不能使用key来指定对应的值,而必须使用value,%是表达式语言当中对字符串计算值的引用。
这样配置以后,运行项目,便可以通过链接来选择不同的语言界面。
运行界面:
当点击English后,对应的请求为:
http://localhost:8080/ch06LoginAction.action?request_locale=en_US
按照这样,将网站中所有的文字都在配置文件中配置成不同种的语言,就可以实现不同种语言的切换,也可以利用拦截器来获取cookies中的lang值来自动设置网站的语言。