一、普通java工程實現(xiàn)國際化(工程struts2_3100_I18N_Test
)
首先在src下存放國際化文件
app_en_US.properties
welcome.msg=hello,sir
app_zh_CN.properties
welcome.msg=\u6B22\u8FCE\u4F60\uFF01
我們使用一個普通的java程序進行測試:
Test.java
package com.bjsxt;
import java.util.Locale;
import java.util.ResourceBundle;
public class Test {
public static void main(String[] args) {
ResourceBundle res = ResourceBundle.getBundle("app", Locale.US);
System.out.println(res.getString("welcome.msg" ));
}
}
說明:我們這里在方法getBundle
中的第一個參數(shù)是填寫資源文件的開頭部分,資源文件中的第二部分(如en)表示語言,第三部分(如US)表示國家。方法的第二個參數(shù)選擇國家。
二、struts2中的國際化(工程struts2_3200_BBS2009_08_I18N
)
struts2中國際化分為三個級別,分別是action級、package級、工程級,作用范圍依次變大,但是一般我們都使用工程級。
2.1 action級和package級國際化
這兩種方式一般不太用,這里不詳細講。
需要明白的是action級的資源文件寫法一般為LoginAction_en_US.properties
和LoginAction_zh_CN.properties
,這里名字的第一部分最好和action的名字相同,這個級別的國際化資源文件只能給對應(yīng)的action使用。而package級別的資源文件的名字一般為package_en_US.properties
和package_zh_CN.properties
,注意第一部分一定要是package。這兩類資源文件都放在action包中。
2.2 工程級國際化
此時資源文件一般放在src目錄下。
bbs2009_en_US.properties
login.username=username:
login.password=password:
login.login=login
welcome.msg=welcome\:{0}
bbs2009_zh_CN.properties
login.username=\u7528\u6237\u540D\uFF1A
login.password=\u5BC6 \u7801\uFF1A
login.login=\u767B\u5F55
welcome.msg=\u6B22\u8FCE\u4F60\uFF1A{0}
這里以登錄為例:
LoginAction.java
package com.bjsxt.bbs2009.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private String username;
private String password;
public String login() throws Exception {
return "success";
}
public String input() {
return "input";
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<!-- 配置資源文件的地址 -->
<constant name="struts.custom.i18n.resources" value="bbs2009"></constant>
<package name="admin" namespace="/admin" extends="struts-default" >
<default-action-ref name="index"/>
<action name="index">
<result>/admin/index.html</result>
</action>
<action name="*_*" class="com.bjsxt.bbs2009.action.{1}Action" method="{2}">
<result>/admin/{1}_{2}.jsp</result>
<result name="input">/admin/{1}_{2}.jsp</result>
</action>
</package>
<package name="front" namespace="/" extends="struts-default" >
<default-action-ref name="Category_list"/><!-- 默認訪問此界面 -->
<action name="Category_list" class="com.bjsxt.bbs2009.action.CategoryAction" method="list">
<result>/index.jsp</result>
</action>
</package>
</struts>
Login_input.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Login_input</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<form action="admin/Login-login" method="post">
<!-- 注意取得資源文件內(nèi)容的寫法 -->
<s:property value="getText('login.username')"/><input name="username" />
<s:property value="getText('login.password')"/><input name="password" type="password" />
<input type="submit" value="<s:property value="getText('login.login')"/>" />
</form>
<s:debug></s:debug>
</body>
</html>
Login_login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Login_login</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
歡迎您:<s:property value="username"/>
<s:text name="welcome.msg">
<s:param value="username"></s:param>
</s:text>
</body>
</html>
說明:
- 1.首先在配置文件中我們需要配置資源文件:
<constant name="struts.custom.i18n.resources" value="bbs2009"></constant>
其中value值是資源文件名字的第一部分。
- 2.在輸入頁面中我們?nèi)≈档姆椒ㄊ?/li>
value="getText('login.username')"
- 3.在登錄成功后的頁面(
Login_login.jsp
)中我們?nèi)〉糜脩裘沁@個名字我們是不能在資源文件中寫死的,所以我們采用動態(tài)指定。 - 4.有時候我們可以看到有一種網(wǎng)站,當我們點擊鏈接就會將整個網(wǎng)站的語言變換。
我們在Login_input.jsp
中加上兩個鏈接:
<a href="admin/lang?request_locale=en_US">en</a>
<a href="admin/lang?request_locale=zh_CN">cn</a>
其中l(wèi)ang是action的name屬性值,提交到特定的action去處理。
最后:
這個內(nèi)容在以后的開發(fā)中用的較少,這里不多說。