在Struts 2版本2.3.28中,i18n拦截器仅接受注册到jvm(由返回的列表)的语言环境Locale.getAvailableLocales()。
i18n
Locale.getAvailableLocales()
好吧,尽管我可以扩展可用的Java语言环境的列表,如前所述如何扩展可用的Java语言环境的列表,将拦截器设置为接受所有字符串作为语言环境(例如fa_IR)是一种简便的方法吗?
fa_IR
请注意:将默认语言环境设置为fa_IR(<constant name="struts.locale" value="fa_IR" />)可以正常工作。
<constant name="struts.locale" value="fa_IR" />
不,您必须创建自己的拦截器,以扩展i18n并覆盖此方法
protected Locale getLocaleFromParam(Object requestedLocale) { Locale locale = null; if (requestedLocale != null) { locale = (requestedLocale instanceof Locale) ? (Locale) requestedLocale : LocalizedTextUtil.localeFromString(requestedLocale.toString(), null); if (locale != null && LOG.isDebugEnabled()) { LOG.debug("applied request locale=#0", locale); } } if (locale == null) { locale = Locale.getDefault(); } return locale; }