簡體   English   中英

Tomcat國際化維護

[英]Tomcat internationalization maintenance

我正在嘗試在Tomcat中實現國際化。 將有不同的資源文本文件。 我的想法是在tomcat加載時將所有資源加載到內存中。 下面是將多個資源加載到內存中的示例代碼。

public class ResourceBundleLoader {


    private static ResourceBundle enResourceBundle;
    private static ResourceBundle frResourceBundle;

    public static void loadBundle(){
        Locale enLocale = new Locale("en", "US");
        enResourceBundle = ResourceBundle.getBundle("MessagesBundle",enLocale);
        enLocale = new Locale("fr", "FR");
        frResourceBundle = ResourceBundle.getBundle("MessagesBundle",enLocale);
    }

    public static ResourceBundle getEnResourceBundle(){
        return enResourceBundle;
    }

    public static ResourceBundle getFrResourceBundle(){
        return frResourceBundle;
    }
}

通過啟動servlet一次調用loadBundle方法。 並相應地調用getEnResourceBundle()和getFrResourceBundle()。 在雄貓中實現/保持國際化的正確方法嗎? 還是有更好的方法?

提前致謝。

您不需要制作此幫助程序類,因為根據Java文檔 ,捆綁包已經為您緩存在內存中。 這只會使您的代碼維護更加復雜。 即,每次添加新的“捆綁包”時,您都必須更改代碼。

只需將這樣的代碼添加到您的servlet和/或JSP:

//request.getLocale() returns the web browsers locale
bundle = ResourceBundle.getBundle("MessagesBundle",request.getLocale())

只要確保您有一個包含所有文本的默認消息捆綁文件即可。 然后,您可以隨翻譯隨便添加其他語言環境。

UTF-8支持

我也強烈建議您創建一個適用於所有請求的Servlet過濾器,以確保為輸出的html和發回應用​​程序的表單響應的解析都打開了UTF-8:

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");

在知道i18n速度太慢之前,我不會進行優化。

但是,如果我沿着您的道路前進,而不是使用標量ResourceBundles,我會將ResouceBundles放入地圖中。 現在,您的代碼可以使用任何知道語言環境的捆綁軟件-無論如何您都必須選擇適當的ResourceBundle。

如果您的代碼沒有if locale is this, use English 相反,它將是myResourceBundle = bundleMap.get(myLocale);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM