I18N 实际就是 Internationalization,因为以 I 开头,以 N 结尾,共18个字母,也就是国际化的意思
环境要求:Struts2框架搭建完成
要实现程序的国际化,就要提供程序所需要的资源文件
资源文件的内容基本是key-value对
message_zh_CN.properties
login.username=\u767B\u5F55\u7528\u6237\u540D
login.password=\u767B\u5F55\u5BC6\u7801
login.btn=\u767B\u5F55
check=\u8BF7\u9009\u62E9\u8BED\u8A00
chinese=\u4E2D\u6587
english=\u82F1\u6587
message_en_US.properties
login.username=username
login.password=password
login.btn=login
check=Please check your language
chinese=Chinese
english=English
编写jsp页面
要注意这里用到了s标签
login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; utf-8">
<title></title>
</head>
<body>
<s:i18n name="messages">
<a href="changeLanguage.action?request_locale=zh_CN"><s:text name="chinese"></s:text></a>
<a href="changeLanguage.action?request_locale=en_US"><s:text name="english"></s:text></a>
<br/>
<form action="login" method="post">
<table>
<tr>
<td><s:text name="login.username"/></td>
<td><input type="text" name="user.userName"/></td>
</tr>
<tr>
<td><s:text name="login.password"/></td>
<td><input type="text" name="user.password"/></td>
</tr>
<tr>
<td colspan="2"><input type="button" value="<s:text name="login.btn"/>"/></td>
</tr>
</table>
</form>
</s:i18n>
</body>
</html>
编写action
ChangeLanguageAction.java
package com.international.action;
public class ChangeLanguageAction {
public String execute(){
return "success";
}
}
配置struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="globalMessage"/>
<package name="default" namespace = "/" extends="struts-default">
<action name="changeLanguage" class="com.international.action.ChangeLanguageAction">
<result>/login.jsp</result>
</action>
</package>
</struts>
项目结构
效果图: