4

サイトを多言語化したい。

を含む通常のインターセプタースタックがあります

<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{
  .........

しかし、うまくいきませんでしたか?何か不足していますか、それとも独自のインターセプターを作成する必要がありますか?

4

1 に答える 1