天天看點

Struts2國際化應用程式國際化 如何實作應用程式國際化配置全局資源與輸出國際化資訊全局資源檔案中含有占位符 在action中擷取資源檔案的資訊國際化—JSP中直接通路某個資源檔案 使用 native2ascii 程式轉換字元編碼

應用程式國際化

l 軟體的本地化 :一個軟體在某個國家或地區使用時,采用該國家或地區的語言,數字,貨币,日期等習慣。 l 軟體的國際化 :軟體開發時, 讓它能支援多個國家和地區的本地化應用 。使得應用軟體能夠适應多個地區的語言和文化風俗習慣。

l 資源檔案和資源包

要用 Struts 實作國際化和本地化,首先要定義資源檔案的名稱,這個檔案會包含用預設語言編寫的會在程式中出現的所有消息。這些消息以”鍵-值“對的形式存儲,如下:

error.validation.localtion = The entered location is invalid

當對一個應用程式進行國際化處理時,所要用的各種語言版本的”标簽“資訊應該存放在不同的屬性檔案中,每一個這樣的檔案對應一種語言版本。所有屬性檔案合在一起稱為資源包( ResourceBundle )。

屬性檔案的命名格式可分為以下兩種:

    a) 檔案名字首 .properties

    b)檔案名字首_語言種類.properties

檔案名字尾必須是properties,字首可自由書寫,其中語言種類字段必須是有效的ISO語言代碼。 l 檔案名字首 .properties 預設的形式,當其他屬性檔案找不到時,會預設的尋找此屬性檔案。

如何實作應用程式國際化

l 針對不同的國家定義不同的資源檔案 l 資源檔案的命名: 基名 _ 國家代碼 _ 語言代碼 .properties

  預設名:基名.properties

l 定義不同的資源檔案 • 中文的資源檔案 • 檔案名: resources_zh_CN.properties • 檔案内容: item.username = 使用者名 • 英文的資源檔案 • 檔案名: resources_en_US.properties • 檔案内容: item.username = username_en • 預設的資源檔案 • 檔案名: resources.properties • 檔案内容: item.username =username l

配置全局資源與輸出國際化資訊

1、準備資源檔案

2、在struts.xml中使用struts.custom.i18n.resources常量即可加載全局資源檔案

    <constantname="struts.custom.i18n.resources"

                      value="cn.itcast.i18n.resource" />

    resource為資源檔案的基本名。

3、在jsp頁面擷取國際化的資源檔案的資訊

        使用text标簽: 用來顯示一條國際化消息的資料标簽. 相當于從property

                    标簽調用 getText方法. 該标簽包含如下屬性:

   * name: 用來檢索消息的鍵

   * var:用來引用壓入 ContextMap棧的值的變量名

   * 可以通過  param子标簽向 text 标簽傳遞參數

   <s:text name="item.username"/>

全局資源檔案中含有占位符

  使用text标簽傳遞參數:

  資源檔案的資訊

              item.test={0},歡迎來到xxxx{1}

    jsp頁面

             <s:text name="item.test">

                    <s:param>使用者名</s:param>     {0}

                    <s:param>密碼</s:param>         {1}    

              </s:text>

   輸出結果:

           使用者名,歡迎來到xxxx密碼

在action中擷取資源檔案的資訊

ActionSupport類實作了TextProvider接口, 該接口負責提供對各種資源包和它們的底層文本消息的通路機制.

當調用getText() 方法時, 它将按以下順序搜尋相關的屬性檔案.

Action類的屬性檔案: 該檔案的名字與相關的動作類的名字一樣, 并且和那個動作類存放在同一個目錄下

動作類所實作的各個接口的屬性檔案

動作類的各個父類的屬性檔案

動作類的各個父類所實作的各個接口的屬性檔案

如果動作類實作了ModelDriven接口, Struts 将調用getModel() 方法并從模型對象的類開始沿着類的繼承關系進行一次上溯搜尋

預設的包的屬性檔案

繼承關系中的下個父包裡的資源包

Struts2國際化應用程式國際化 如何實作應用程式國際化配置全局資源與輸出國際化資訊全局資源檔案中含有占位符 在action中擷取資源檔案的資訊國際化—JSP中直接通路某個資源檔案 使用 native2ascii 程式轉換字元編碼

國際化—JSP中直接通路某個資源檔案

i18n 标簽: 用來加載一個自定義的 ResourceBundle.不用做任何配置

       name:将被加載的資源集的java完全限定名

<s:i18n name=“resource">

   <s:text name=“item.username”/>

</s:i18n>

resource為類路徑下資源檔案的基本名。

      如果要通路的資源檔案在類路徑的某個包下,可以這樣通路:

       <s:i18n name=“cn.itcast.i18n.resource">

    <s:text name=“item.test">

    <s:param>小張</s:param>

    </s:text>

       </s:i18n>

      上面通路cn.itcast.i18n包下基本名為resource的資源檔案。

使用 native2ascii 程式轉換字元編碼

l JDK 中提供了一個 native2ascii 工具程式,它可以将某種本地字元集編碼的字元轉換成 Unicode 轉義序列的形式 l DOS 下進入 test_cn_backup.properties 檔案所在目錄,運作下面的指令後将在目前目錄下生成一個名為 test_zh_CN.properites 檔案:

     native2ascii -encoding gb2312  源檔案   目标檔案.properites

    native2ascii -encoding gb2312   test_cn_backup.txt   test_zh_CN.properites

繼續閱讀