1. 程式人生 > >Struts2筆記六之i18n國際化

Struts2筆記六之i18n國際化

1.國際化的原理
定義對應國家的配置檔案:
app_zh_CN.properties檔案裡面有welcome.msg=你好
app_en_US.properties檔案裡面有welcome.msg=hello
將其放在properties目錄
以下是在Java中測試程式碼
ResourceBundle res = ResourceBundle.getBundle("properties/app",Locale.CHINA);
ResourceBundle res2 = ResourceBundle.getBundle("properties/app",Locale.US);
System.out.println(res.getString("welcome.msg"));輸出的是:你好
System.out.println(res2.getString("welcome.msg"));輸出的是:hello

2.在Web應用中配置國際化
在頁面上取得i18n配置檔案中的內容不需要這樣具體寫法如下:
LoginAction_zh_CN.properties檔案裡面有 login.username = 使用者名稱login.password = 密 碼
LoginAction_en_US.properties檔案裡面有 login.username = username login.password = password
以上兩個檔案放在Action目錄下,這是Action級別下的國際化,一套配置檔案用與一個Action,因為配置檔案前部分名字要和Action類名相同。
頁面取法:
<%@taglib uri="/struts-tags" prefix="s" %>
<s:property value="getText('login.username')">
<s:property value="getText('login.password')">
這樣在修改頁面編碼的時候會自動獲取對應properties中的值。
以上這種不好,因為需要配置太多的配置檔案了。
Struts一共有三種級別的國際化配置
1.Action級別的,2.package級別的,3.App應用級別的.
最常用最好的也就是App級別的,放在src目錄下,只需要配一套國際化配置檔案就可以了。
這裡頁面的取值不需要變,只需要在Struts.xml中配置一下就好了:
<constant name="struts.custom.i18n.resources" value="i18n配置字首如:StrutsI18N"></constant>

3.動態國際化
主需要在頁面上加上一個連結,傳一個引數到任何一個Action,之後整個網頁語言就都變了。
一般來說,在哪一個頁面上就傳遞到哪個Action,因為改變語言要求頁面不變。
連結寫法為:<a href="action地址?request_locale=en_US">English</a>例子如下:
<a href="admin/lang?request_locale=en_US">English</a>
<a href="admin/lang?request_locale=zh_CN">中文</a>