[英]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())
只要確保您有一個包含所有文本的默認消息捆綁文件即可。 然后,您可以隨翻譯隨便添加其他語言環境。
我也強烈建議您創建一個適用於所有請求的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.