0

我发现很难在一个简单的 Web 应用程序中实现它。我将 l10n.properties 文件放在根 WEB-INF 下,但我不明白如何阅读它们。我使用了 PropertiesResourceBundle.getBundle(baseName, locale) 但我不明白我必须为 baseName 写什么。我在一些线程上读到我必须将本地文件放在类路径中:对吗?我在哪里可以在 JDeveloper 中设置类路径?

提前致谢

4

1 回答 1

0

除非您需要在后端读取资源文件(这意味着不是直接在您的 Web 前端),否则在任何情况下都不应该使用它ResourceBundle.getBundle(),尤其是 PropertiesResourceBundle.getBundle()应该使用它的子类。

根据应用程序的类型(无论是 JSP 还是 JSF),您访问资源的方式会有所不同。
对于简单的 JSP,您将使用JSTL和 fmt:message 标签来翻译 UI,就像这里和 StackOverflow 上的无数问题(只需使用屏幕右上角的搜索引擎)。
对于 JSF/Facelets,您需要在 faces-config.xml 中设置适当的变量,并且只需使用有效的表达式语言查询。更多内容可以在这个优秀的教程中找到。

回到您最初的问题,您传递给的基本名称(除非您真的知道自己在做什么,否则请ResourceBundle.getBundle()确保不要使用子类)与您从中访问它的类的路径相关(这意味着它应该是相同的源目录)。另一件事是在这里传递什么。假设您的资源文件名类似于messages.properties、messages_de.properties、messages_es_MX.properties 等,您只需将“messages”放在baseName 中,因此有问题的调用看起来就像ResourceBundle.getBundle("messages", theLocale);theLocale 是您的Locale对象——这个应该被检测到(在 JSP 世界中它有点棘手,在 JSF/Facelets 中它就像 一样简单Locale theLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();)。而已。

于 2011-07-07T07:07:35.513 回答