Java JDeveloper与国际化

Java JDeveloper与国际化,java,internationalization,jdeveloper,resourcebundle,Java,Internationalization,Jdeveloper,Resourcebundle,我发现在一个简单的web应用程序中实现它很困难。 我将l10n.properties文件放在根WEB-INF下,但我不明白如何读取它们。 我使用了PropertiesResourceBundle.getBundle(baseName,locale),但我不明白我必须为baseName编写什么。 我在某个线程上读到,我必须将本地文件放在类路径中:对吗?在JDeveloper中,在哪里可以设置类路径 提前感谢除非您需要读取后端的资源文件(这意味着不直接在web前端),否则在任何情况下都不应使用Res

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


提前感谢

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

根据应用程序的类型(无论是JSP还是JSF),您将以不同的方式访问资源。
对于简单的JSP,您可以使用和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”,本地)
其中Locale是您的
区域设置
对象–应该检测到这个对象(在JSP世界中,这有点棘手,在JSF/Facelets中,它就像
区域设置theLocale=FacesContext.getCurrentInstance().getViewRoot().getLocale();
一样简单)。就这样