1. 程式人生 > >idea中實現struts2框架下國際化

idea中實現struts2框架下國際化

一、輸出國際化資訊
1.需要更改idea設定
File–>settings–>Editer–>File Encodings
在介面的右下角勾選Transparent native-to-ascii conversion,使中文轉成unicode編碼
2.在src下建立至少兩個:基本名_ 語言 _國家.properties全域性資原始檔,基本名同會儲存在一個目錄下!這裡寫圖片描述
3.在struts.xml中進行配置(配置為全域性資原始檔)

 <constant name="struts.custom.i18n.resources" value="tt"></constant
>

若定義在包範圍的資原始檔,檔名為:package_ 語言 _國家.properties,package為固定寫法,資原始檔所在包及其子包下的action均可用;
若定義在某個action範圍的資原始檔,檔名為:ActionClassName_ 語言 _國家.properties(不是avtion name),該資原始檔僅該action可用;
系統在查詢key時,先查action範圍,再查package範圍,後找全域性資原始檔

4.在jsp中顯示(使用全域性資原始檔)

<s:text name="welcome"></s:text>

5.action中獲取
繼承ActionSupport類
呼叫this.getText()方法,引數資源中的key值

public class International extends ActionSupport 
    public String execute() throws Exception {
        String inter=this.getText("welcome");
        ActionContext.getContext().put("msg",inter);
        return SUCCESS;

二、輸出帶有佔位符的國際化資訊
1.資原始檔中{數字}代表佔位符,數字從零開始,{0}代表第一個佔位符
2.jsp頁面輸出(使用全域性資原始檔)

<s:text
name="welcome">
<s:param>快樂</s:param> <s:param></s:param> </s:text>

輸出:快樂歡迎你
3.action中獲取
以下兩種方法獲取
這裡寫圖片描述

  public String execute() throws Exception {
        String inter=this.getText("welcome",new String[]{"天天","你"});
        ActionContext.getContext().put("msg",inter);
        return SUCCESS;
    }

輸出:天天歡迎你
三、jsp中直接訪問資原始檔(不配置)
預設訪問全域性資原始檔,放在下訪問指定路徑的資原始檔;
全域性資原始檔,name為基本名稱

<s:i18n name="tt">
    <s:text name="welcome">
        <s:param>快樂</s:param>
        <s:param></s:param>
    </s:text>
</s:i18n>

包範圍資原始檔,name為包路徑加package

<s:i18n name="cn/hello/package">

action範圍檔案,name為action路徑

<s:i18n name="cn/hello/InternationalAction">