2011-07-06 79 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();一样简单)。而已。