【问题标题】:Where does a ResourceBundle get its Locale?ResourceBundle 从哪里获得它的语言环境?
【发布时间】:2012-07-10 14:34:51
【问题描述】:

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

【问题讨论】:

  • 给我们看一些代码。不清楚你是使用 Struts API 还是 java.util.ResourceBundle API。
  • 完成,如果您需要更多信息,请告诉我。

标签: resources internationalization struts locale bundle


【解决方案1】:

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

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

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

【讨论】:

  • 使用 i18n struts 标签设置了正确的语言。未显示使用 ResourceBundle 的部分。这让我误会了。
猜你喜欢
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2014-10-18
  • 2020-03-31
相关资源
最近更新 更多