在Struts 2版本2.3.28中,i18n
拦截器只接受注册到jvm的语言环境,即Locale.getAvailableLocales()
返回的列表。
好吧,虽然我可以扩展可用的Java语言环境列表,如上所述[{3}},但是设置此拦截器以接受所有字符串作为语言环境(例如fa_IR
)是否有任何简短的方法?
只需注意:将默认语言环境设置为fa_IR
(<constant name="struts.locale" value="fa_IR" />
)即可。
答案 0 :(得分:1)
不,您必须创建自己的扩展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;
}