国际化项目实现网站整体中英文切换:
要求:
- Struts2框架搭配环境成功
- 实现程序的国际化,提供程序所需要的资源文件。
- 资源文件的内容基本是key-value对,其中key是程序使用的部分,而value是程序的显示部分。
这是整个项目的布局(图下):
i18n是项目名称:其来源是英文单词 internationalization的首末字符i 和n。18为中间的字符数。
国际化文件的命名规则:
1、基本名.properties 如:message.properties
2、基本名_语言编码_国家编码.properties 如:message_zh_CN.properties, message_en_US.properties 其中语言编码和国家编码是固定的,可以在JDK中Locale类的常量中找到。
创建资源文件(全局范围国际化文件:):
编写一个globalMessages_zh_CN.properties和globalMessages_en_US.properties放在src下。
globalMessages_zh_CN.properties(中文)
globalMessages_en_US.properties(英文)
编写jsp页面,在jsp上测试英文切换效果:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>中英文切换效果</title>
</head>
<body>
<s:i18n name="globalMessages">
<s:text name="check"></s:text>:
<a href="login.action?request_locale=zh_CN"><s:text name="chinese"></s:text></a>
<a href="login.action?request_locale=en_US"><s:text name="english"></s:text></a>
<br/>
<h3><s:text name="title"></s:text></h3>
<s:form action="login" method="post">
<table width="344" height="300">
<tr>
<td> </td>
</tr>
<tr>
<td><s:text name="username" />
<td><s:textfield name="name" />
</td>
</tr>
<tr>
<td><s:text name="password" />
</td>
<td><s:password name="password" />
</td>
</tr>
<tr>
<td> </td>
<td><s:submit value="%{getText('login')}" /></td>
</tr>
</table>
</s:form>
</s:i18n>
</body>
</html>
编写一个action类
创建一个action类,本项目是以(com.hnpi.action)为准。
注意:
配置拦截器,在进入action之前进行语言选择的处理
这里创建个ChangeLanguage.java
在struts2中,提供了一个i18n的拦截器,这个拦截器在执行Action方法之前,自动查找请求中名为request_locale的参数,拦截后转换为Locale对象,放置在用户session的名为“WW_TRANS_I18N_LOCALE”的属性。I18n在程序运行时会被自动加载,我们可以利用这些来设置允许用户自动选择网页的语言。
在struts.xml中配置拦截器和国际化的资源:
最后效果为:
设置的默认为中文。
点击英文:
这样就完成了国际化项目。
在不同的语言的切换只需要提供不同国家语言的资源文件即可。
项目中点击login后会没有效果,我会尽快完善,如果觉得项目中存在问题,随时欢迎来提醒,我会立即改善代码。