0

我在 i18n struts 应用程序中使用资源包。在大多数页面上,资源包会选择正确的语言(语言是通过 i18n struts 拦截器设置的)。并且在一个页面上,资源包没有选择正确的语言。我不知道为什么。这就是为什么我想知道 ResourceBundle 的语言环境来自哪里。

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

好的,在一个 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”(浏览器也是英文的)。

4

1 回答 1

0

ResourceBundle.getBundle(),如果您不传递任何语言环境作为参数,则使用 JVM 的默认语言环境,如其API 文档中所示。

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

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

于 2012-07-10T15:38:22.447 回答