簡體   English   中英

JDeveloper 和國際化

[英]JDeveloper and Internationalization

我發現很難在一個簡單的 web 應用程序中實現它。 我將 l10n.properties 文件放在根 WEB-INF 下,但我不明白如何閱讀它們。 我使用了 PropertiesResourceBundle.getBundle(baseName, locale) 但我不明白我必須為 baseName 寫什么。 我在一些線程上讀到我必須將本地文件放在類路徑中:對嗎? 我在哪里可以在 JDeveloper 中設置類路徑?

提前致謝

除非您需要在后端讀取資源文件(這意味着不是直接在您的 web 前端),否則在任何情況下都不應使用ResourceBundle.getBundle()尤其是PropertiesResourceBundle.getBundle()的子類它。

根據應用程序的類型(無論是 JSP 還是 JSF),您訪問資源的方式會有所不同。
在簡單的 JSP 的情況下,您將使用JSTL和 fmt:message 標簽來翻譯 UI,就像這里和 StackOverflow 上的無數問題(只需使用屏幕右上角的搜索引擎)。
對於 JSF/Facelets,您需要在 faces-config.xml 中設置適當的變量,並且只需使用有效的表達式語言查詢。 更多內容可以在這個優秀的教程中找到。

回到你原來的問題,你傳遞給ResourceBundle.getBundle()的基本名稱(除非你真的知道你在做什么,否則一定不要使用子類)與你正在訪問它的 class 的路徑有關(這意味着它應該是相同的源目錄)。 另一件事是在這里傳遞什么。 假設您的資源文件名類似於messages.properties、messages_de.properties、messages_es_MX.properties 等,您只需將“messages”作為baseName,因此相關調用看起來像ResourceBundle.getBundle("messages", theLocale); 其中 theLocale 是您的Locale object - 應該檢測到這個(在 JSP 世界中它有點棘手,在 JSF/Facelets 中它就像Locale theLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();一樣簡單而已。

暫無
暫無

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

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