2011-07-06 122 views
0

我發現很難在簡單的Web應用程序中實現它。 我把l10n.properties文件放在WEB-INF的根目錄下,但我不明白我怎麼讀它們。 我使用了PropertiesResourceBundle.getBundle(baseName,locale),但我不明白我必須爲baseName編寫什麼。 我讀了一些線程,我必須把本地文件放在classpath中:是嗎?我在哪裏可以在JDeveloper中設置類路徑?JDeveloper和國際化

在此先感謝

回答

0

除非你需要閱讀後端側資源文件(在你的web前端直接表示不),你不應在任何情況下使用ResourceBundle.getBundle()和尤其是不是PropertiesResourceBundle.getBundle()它是它的子類。

根據應用程序的類型(無論是JSP還是JSF),您將以不同方式訪問資源。
如果使用簡單的JSP,您可以使用JSTL和fmt:message標記來翻譯UI,就像here和StackOverflow上的無數問題(只需使用屏幕右上角的搜索引擎)即可。
對於JSF/Facelets,您需要在faces-config.xml中設置適當的變量,並簡單地使用有效的表達式語言查詢。有關更多信息,請參見this excellent tutorial

回到你原來的問題,基地的名稱,你傳遞給ResourceBundle.getBundle()(一定不使用子類,除非你真的知道自己在做什麼)是關係到你訪問它的類路徑(這意味着它應該是相同的源目錄)。另一件事是通過這裏。假設您的資源文件名與messages.properties,messages_de.properties,messages_es_MX.properties以及類似文件名相似,那麼您只需爲baseName輸入「messages」,以便有問題的電話看起來像ResourceBundle.getBundle("messages", theLocale);,其中theLocale是您的Locale對象 - this一個應該被檢測到(在JSP世界中它有點棘手,在JSF/Facelets中它就像Locale theLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();一樣簡單)。而已。