Struts2教程10:國際化
本文為原創,如需轉載,請註明作者和出處,謝謝!
國際化的作用就是根據不同國家的使用者在訪問Web或其他型別的程式時,將各種資訊以本地的常用形式顯示出來,如介面資訊在中國,就會顯示中文資訊,在以英文為主的國家裡,就會顯示英文資訊。還有就是一些資訊的格式,如日期格式等。
從屬性檔案中獲得字串資訊是國際化的基本應用。在Struts2中使用的屬性檔案就是Java屬性檔案,副檔名為properties。在Struts2中的屬性檔案可以有很多預設的位置,Struts2可按如下的順序(或步驟)來定位屬性檔案:
1. ActionClass.properties:屬性檔名和動作類同名。Struts2會首先查詢與當前訪問的動作類同名,並且和ActionClass.class在同一個目錄下的屬性檔案。
2. BaseClass.properties:BaseClass表示動作類的基類。所有動作類都會查詢Object.properties檔案(因為Object是所有Java類的基類),但要注意的是Object.properties檔案可不能放到當前動作類的目錄中,由於Object在java.lang包中,因此,Object.properties要放到jdk包的java"lang目錄中。而對於ActionSupport.properties檔案,當然也不能放到動作類的當前目錄中,由於ActionSupport類中com.opensymphony.xwork2名中,因此,需要將ActionSupport.properties檔案放到xwork2.jar包中的comopensymphonyxwork2目錄中,由於放到jar檔案中不太方便,因此,可以使一個和當前動作類在一個目錄的類先繼承ActionSupport,然後所有的動作類都繼承於這個類。程式碼如下:
public class MyActionSupport extends ActionSupport
{
... ...
}
public class ActionClass extends MyActionSupport
{
... ...
}
這樣的話,只要存在一個MyActionSupport.properties,在當前目錄下的所有動作類都會讀取這個檔案。
3. Interface.properties:這類檔案和BaseClass.properties類似,Interface表示動作類實現的介面。
4. 如果動作類實現了ModelDriven, 那麼重複第1步。
5. package.properties:大家要注意。這個檔案就叫package.properties。不象Interface和BaseClass都是泛指。這個檔案可以放到當前動作類的包的任何一層目錄下。如當前動作類在action.test包中。那麼package.properties可以放到action目錄中,也可以放到action"test目錄中。Struts2會從離動作類最近的位置開始查詢package.properties檔案。
6. 搜尋il8n資源資訊
7. 查詢全域性資源屬性檔案
如下面是一個動作類
package action.test;
import org.apache.struts2.*;
import com.opensymphony.xwork2.ActionSupport;
public class Internationalizing extends ActionSupport
{
public String execute() throws Exception
{
return "forward";
}
}
在action est目錄下有一個Internationalizing.properties檔案,內容如下:
delete = 刪除
save = 儲存
我們可以在jsp檔案中使用如下幾種方法取出資源資訊:
3. 使用標籤。這個標籤可以直接定位屬性檔案,如abc.properties在WEB-INFclasses est目錄下,內容和Internationalizing.properties一樣,則可以使用如下的程式碼讀取abc.properties的內容:
當然,我們也可以使用全域性的屬性檔案,在WEB-INF"classes目錄下建立一個struts.properties檔案,內容如下:
struts.custom.i18n.resources=my
在WEB-INFclasses目錄下建立一個my.properties檔案,當Struts2按著上述的順序沒有找到相應的屬性檔案時,最後就會考慮尋找全域性的屬性檔案,因此,就會找到my.properties。
還可以通過屬性檔名來讓Struts2按著客戶端瀏覽器的語言環境來找符合某種語言的屬性檔案。如有三個屬性檔案language.properties、language_en.properties、language_zh.properties。如果客戶端的語言是中文,Struts2就會讀language_zh.properties,如果是英文,就會讀language_en.properties。如果這兩個檔案的某個不存在,就會讀language.properties。讀者可通過IE的[工具]->[Internet]->[語言]來測試客戶端瀏覽器的語言,如圖1所示:
gjh_01.jpg
圖1
國際化的作用就是根據不同國家的使用者在訪問Web或其他型別的程式時,將各種資訊以本地的常用形式顯示出來,如介面資訊在中國,就會顯示中文資訊,在以英文為主的國家裡,就會顯示英文資訊。還有就是一些資訊的格式,如日期格式等。
從屬性檔案中獲得字串資訊是國際化的基本應用。在Struts2中使用的屬性檔案就是Java屬性檔案,副檔名為properties。在Struts2中的屬性檔案可以有很多預設的位置,Struts2可按如下的順序(或步驟)來定位屬性檔案:
1. ActionClass.properties:屬性檔名和動作類同名。Struts2會首先查詢與當前訪問的動作類同名,並且和ActionClass.class在同一個目錄下的屬性檔案。
2. BaseClass.properties:BaseClass表示動作類的基類。所有動作類都會查詢Object.properties檔案(因為Object是所有Java類的基類),但要注意的是Object.properties檔案可不能放到當前動作類的目錄中,由於Object在java.lang包中,因此,Object.properties要放到jdk包的java"lang目錄中。而對於ActionSupport.properties檔案,當然也不能放到動作類的當前目錄中,由於ActionSupport類中com.opensymphony.xwork2名中,因此,需要將ActionSupport.properties檔案放到xwork2.jar包中的comopensymphonyxwork2目錄中,由於放到jar檔案中不太方便,因此,可以使一個和當前動作類在一個目錄的類先繼承ActionSupport,然後所有的動作類都繼承於這個類。程式碼如下:
public class MyActionSupport extends ActionSupport
{
... ...
}
public class ActionClass extends MyActionSupport
{
... ...
}
這樣的話,只要存在一個MyActionSupport.properties,在當前目錄下的所有動作類都會讀取這個檔案。
3. Interface.properties:這類檔案和BaseClass.properties類似,Interface表示動作類實現的介面。
4. 如果動作類實現了ModelDriven, 那麼重複第1步。
5. package.properties:大家要注意。這個檔案就叫package.properties。不象Interface和BaseClass都是泛指。這個檔案可以放到當前動作類的包的任何一層目錄下。如當前動作類在action.test包中。那麼package.properties可以放到action目錄中,也可以放到action"test目錄中。Struts2會從離動作類最近的位置開始查詢package.properties檔案。
6. 搜尋il8n資源資訊
7. 查詢全域性資源屬性檔案
如下面是一個動作類
package action.test;
import org.apache.struts2.*;
import com.opensymphony.xwork2.ActionSupport;
public class Internationalizing extends ActionSupport
{
public String execute() throws Exception
{
return "forward";
}
}
在action est目錄下有一個Internationalizing.properties檔案,內容如下:
delete = 刪除
save = 儲存
我們可以在jsp檔案中使用如下幾種方法取出資源資訊:
3. 使用
當然,我們也可以使用全域性的屬性檔案,在WEB-INF"classes目錄下建立一個struts.properties檔案,內容如下:
struts.custom.i18n.resources=my
在WEB-INFclasses目錄下建立一個my.properties檔案,當Struts2按著上述的順序沒有找到相應的屬性檔案時,最後就會考慮尋找全域性的屬性檔案,因此,就會找到my.properties。
還可以通過屬性檔名來讓Struts2按著客戶端瀏覽器的語言環境來找符合某種語言的屬性檔案。如有三個屬性檔案language.properties、language_en.properties、language_zh.properties。如果客戶端的語言是中文,Struts2就會讀language_zh.properties,如果是英文,就會讀language_en.properties。如果這兩個檔案的某個不存在,就會讀language.properties。讀者可通過IE的[工具]->[Internet]->[語言]來測試客戶端瀏覽器的語言,如圖1所示:
gjh_01.jpg
圖1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12921506/viewspace-281098/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java Struts2 本地化/國際化(i18n)淺析Java
- Struts2【UI標籤、資料回顯、資源國際化】UI
- Flask教程第十三章:國際化和本地化Flask
- 國際化思考
- ios國際化iOS
- Java 國際化(一)Java
- Android國際化Android
- Jsf國際化JS
- iOS 國際化 && 本地化iOS
- iOS國際化(本地化)iOS
- struts2的國際化(即實現網站整體中英文切換)例項網站
- 菜鳥學SSH(三)——Struts2國際化自動檢測瀏覽器語言版瀏覽器
- Java中的國際化Java
- Spring Webflux國際化SpringWebUX
- Webnovel 國際化實踐Web
- Grails國際化例項AI
- QT6 國際化QT
- jeecg 國際化處理
- Struts框架的國際化框架
- Java國際化小小示例Java
- Yii2-國際化
- 【spring 國際化】springMVC、springboot國際化處理詳解SpringMVCSpring Boot
- iOS語言國際化(本地化)iOS
- Django國際化與本地化指南Django
- struts2簡明教程
- Struts2教程1:第一個Struts2程式
- Spring-boot國際化Springboot
- vux UI 專案國際化UXUI
- 5分鐘前端國際化前端
- Laravel 文件閱讀:國際化Laravel
- ?HeyUI完成國際化支援啦????UI
- Android實現國際化Android
- struts國際化程式嘗試
- JAVA的國際化機制Java
- Angular 18+ 高階教程 – 國際化 Internationalization i18n (Draft)AngularRaft
- Java模組化的國際化實現- GunnarJava
- struts2驗證+攔截器+國際化+下載excle文件+struts2二級聯動+OGNL表達試+ssh整合\部分程式碼, 專案下載、
- Flutter 國際化適配實戰Flutter