2012-07-10 63 views
0

我在i18n struts應用程序中使用資源包。在大多數頁面上,資源包選擇正確的語言(語言通過i18n struts攔截器設置)。並且在一頁上資源包不會選擇正確的語言。我無法弄清楚爲什麼。這就是爲什麼我想知道ResourceBundle的Locale來自哪裏。ResourceBundle在哪裏獲取其語言環境?

在框架中調用動作會對資源包造成一些麻煩嗎?

確定,所以,在Struts動作我有以下幾點:

ResourceBundle resourceBundleProcess = null; 
     try { 
      resourceBundleProcess = ResourceBundle 
        .getBundle(BpmUiConstantes.BPMUI_PROCESS_CONF_FOLDER + "/" 
          + caseType); 
      LOG.info("Locale used by bundle : " + resourceBundleProcess.getLocale()) ; 
     } 

通過我通過指定request_locale = EN場景設置成「en」作爲實例的URL。 i18n struts攔截器應該獲取語言環境並使用它。雖然,我不確定是否會影響ResourceBundles。我認爲這是因爲在我的其他頁面上文本以正確的語言顯示。但是由於某些原因,這裏LOG顯示「fr」(瀏覽器也是英文的)。

+0

向我們展示一些代碼。目前尚不清楚您是使用Struts API還是java.util.ResourceBundle API。 – 2012-07-10 15:07:22

+0

完成,告訴我你是否需要更多信息。 – Lyth 2012-07-10 15:33:42

回答

0

ResourceBundle.getBundle(),如果您未傳遞任何區域設置作爲參數,則使用JVM的默認區域設置,如其API documentation中所示。

Struts對此沒有任何影響。

如果你想使用的語言環境由Struts的國際化攔截器設置,要麼使用Struts的API,讓您的文字,如the documentation解釋,或使用ActionSupport中的getLocale()方法從會話的語言環境,並將它傳遞給ResourceBundle.getBundle()

+0

非常感謝。將檢查爲什麼有些頁面顯示正確的語言,然後...... – Lyth 2012-07-10 15:46:36

+0

正確的語言是用i18n struts標籤設置的。沒有顯示使用ResourceBundle的部分。哪個讓我誤解了。 – Lyth 2012-07-11 10:54:34

相關問題