ResourceBundle在哪里获得其Locale?

时间:2012-07-10 14:34:52

标签: resources internationalization struts locale bundle

我在i18n struts应用程序中使用资源包。在大多数页面上,资源包选择正确的语言(语言通过i18n struts拦截器设置)。在一个页面上,资源包没有选择正确的语言。我无法弄清楚为什么。这就是为什么我想知道ResourceBundle的Locale来自何处。

在框架中调用操作会导致资源包出现问题吗?

好的,在struts动作中我有以下内容:

ResourceBundle resourceBundleProcess = null;
        try {
            resourceBundleProcess = ResourceBundle
                    .getBundle(BpmUiConstantes.BPMUI_PROCESS_CONF_FOLDER + "/"
                            + caseType);
            LOG.info("Locale used by bundle : " + resourceBundleProcess.getLocale()) ;
        }

通过url我将语言环境设置为“en”,例如通过指定request_locale = en。 i18n struts拦截器应该获取语言环境并使用它。虽然,我不确定是否会影响ResourceBundles。我认为它确实发生在我的其他页面上,文本以正确的语言显示。但是这里LOG由于某种原因显示“fr”(浏览器也是英文版)。

1 个答案:

答案 0 :(得分:0)

ResourceBundle.getBundle(),如果未将任何语言环境作为参数传递,则使用JVM的默认语言环境,如API documentation所示。

Struts无法对此产生任何影响。

如果你想使用Struts i18n拦截器设置的语言环境,可以使用Struts API获取你的文本,如the documentation中所述,或使用ActionSupport的getLocale()方法从中获取语言环境会话,并将其传递给ResourceBundle.getBundle()