我在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”(浏览器也是英文版)。
答案 0 :(得分:0)
ResourceBundle.getBundle()
,如果未将任何语言环境作为参数传递,则使用JVM的默认语言环境,如API documentation所示。
Struts无法对此产生任何影响。
如果你想使用Struts i18n拦截器设置的语言环境,可以使用Struts API获取你的文本,如the documentation中所述,或使用ActionSupport的getLocale()
方法从中获取语言环境会话,并将其传递给ResourceBundle.getBundle()
。