Struts2的i18n國際化-關於默認資源文件

    昨天接到一個新的任務,將之前的一個供貨商管理系統進行國際化支持,該系統採用了Status2框架,因此對Struts2的國際化進行了一些研究,下面是關於國際化配置的一些結果,分享給大家參考:  

    1.    建立資源文件: 建立資源文件如:

            message.properties:作爲默認資源文件使用,當無法匹配其他資源文件時使用;

            message_zh_CN.properties:中文語言資源文件.

            因爲需求目前僅需要英文語言和中文語言,因此只建立了這兩個文件。

    2.    配置status2指定資源目錄, 在status2的配置文件status.xml中加入配置文件指定資源文件:

            爲了管理,資源文件都生成在src/i18n/文件夾下,並且將資源文件進行了拆分,所以最終的配置如:

<constant name=”struts.custom.i18n.resources” value=”i18n.globalResource,i18n.messages” />

            在Status2的i18n資源文件配置中,如果需要引用多個資源文件,可以在多個文件之間使用英文標點”,”進行分隔。

    3.    在jsp或action中引用資源文件中的數據:

            在jsp頁面中,一般我們可以使用struts的標籤來引用資源文件中的數據,如:

<s:text name=”messages.sys001″ />

            另外,在引用過程中也可以對參數進行賦值等,如local.pageno=第{0}頁,在jsp中使用<s:param>標籤引用:

<s:text name=”local.pageno”><s:param>${pageNo}</s:param></s:text>

            jsp中還有一些其他的引用方式,在這裏不一一說明了,在action中引用,一般使用getText()方法,使用該方法需要action類繼承ActionSupport父類,如:

System.out.println(this.getText(“message.sys001″));

    到這裏的配置基本上在百度上都很容易找到了,筆者也很容易的實現了這些調用,但是這是筆者遇到了一些其他問題:在本地部署好項目後,使用瀏覽器方法頁面,中文信息都是很正常的,但是當筆者修改了瀏覽器默認語言爲英文或俄文後,訪問頁面依然返回了中文頁面。

    可能是不會百度吧,google也無法訪問,測試了很久,才找到了問題所在:當struts在找不到瀏覽器指定的語言對應的資源文件的時候,並不是直接使用默認的資源文件,而是會根據項目部署的服務器的默認語言來查找資源文件,直到默認語言的資源文件依然沒有找到,纔會使用默認的資源文件,筆者的本地環境是中文系統,所以當筆者修改了瀏覽器的語言爲英文的時候,因爲這個時候沒有en_US的資源文件,struts通過locale的默認語言(可以通過locale.getDefault查看,筆者爲zh_CN)來獲取相應的資源文件,這個資源文件是存在的,因此自動返回了中文信息。

    爲了解決這個問題,可以通過設置默認的locale來解決該問題,筆者通過servlet的listener實現了該功能,當然或許還有其他的解決方案~,筆者的代碼如下:

package com.zhenpin.supplier.listener;
import java.util.Locale;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class DefaultLocaleListener implements ServletContextListener {

    public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
    
    }
    
    public void contextInitialized(ServletContextEvent event) {
        // 設置默認的localer語言爲en_US,用於國際化
        Locale.setDefault(Locale.ENGLISH);
    }

}

對於問題分析,可能存在不準確的地方,歡迎大家指正~

另外,該文章轉載自我的主站:http://www.smileyb.cn/?p=107,如需轉載,請註明出處,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章