Я хочу сделать сайт многоязычным.
У меня есть нормальный стек перехватчиков, который содержит
<interceptor-ref name="i18n" />
Обычный jsp для смены локали:
<s:a action="locale-manager" namespace="/common">
<s:param name="request_locale">fa_IR</s:param>
فارسی
</s:a>
<s:a action="locale-manager" namespace="/common">
<s:param name="request_locale">en_US</s:param>
English
</s:a>
И простое действие LocaleManager
public class LocaleManager extends ActionSupport{
private static final Logger log = LoggerFactory.getLogger(LocaleManager.class);
public String execute() {
log.debug("Change the local to {}", getLocale() );
return "homepage";
}
}
В приведенном выше сценарии перехватчик i18n всегда запускается для всех действий, для которых нет решения. Потому что языковой стандарт изменяется только тогда, когда пользователь нажимает на действие locale-manager.
Я попытался удалить стек перехватчика и добавить перехватчик i18n только в LocaleManager, как показано ниже.
@InterceptorRefs({ @InterceptorRef("i18n") })
public class LocaleManager extends ActionSupport{
.........
Но не вышло ?! Я что-то упускаю, или мне стоит написать свой собственный перехватчик?