SAFluteの国際化対応 (i18n)
SAFluteの特徴の一つです。
国際化対応の概要
様々なアプリの要件に合わせた Locale と Timezone の管理ができるようになっています。
TODO jflute 書き途中
AssistantDirector で Provider 実装
UserLocaleProcessProvider
以下のインターフェースを実装して、AssistantDirector にて登録をします。
UserLocaleProcessProviderインターフェース @Java
/**
 * The provider of user locale process for current request.
 * @author jflute
 */
public interface UserLocaleProcessProvider {
    /**
     * Does it accept cookie locale? (prevails over session)
     * @return The determination, true or false.
     */
    boolean isAcceptCookieLocale();
    /**
     * Find business locale. (prevails over cookie)
     * @param executeMeta The meta of action execution which you can get the calling method. (NotNull)
     * @param requestManager The manager of request to find your locale. (NotNull)
     * @return The found locale by your business rule. (NullAllowed: if null, not found)
     */
    Locale findBusinessLocale(ActionExecuteMeta executeMeta, RequestManager requestManager);
    /**
     * Get the requested locale. (for when not found in session or cookie)
     * @param requestManager The manager of request to find your time-zone. (NotNull)
     * @return The locale as default by your business rule. (NullAllowed: if null, requested client locale)
     */
    Locale getRequestedLocale(RequestManager requestManager);
    /**
     * Get the fall-back locale. (for no locale everywhere)
     * @return The fixed instance of locale, might be cached. (NullAllowed: if null, server locale)
     */
    Locale getFallbackLocale();
}
	UserTimeZoneProcessProvider
以下のインターフェースを実装して、AssistantDirector にて登録をします。
UserTimeZoneProcessProviderインターフェース @Java
/**
 * The provider of user time-zone process for current request.
 * @author jflute
 */
public interface UserTimeZoneProcessProvider {
    /**
     * Does it use time-zone handling? 
     * The time-zone handling is option (not related to Struts) so you need to choose.
     * @return The determination, true or false.
     */
    boolean isUseTimeZoneHandling();
    /**
     * Does it accept cookie time-zone? (prevails over session)
     * @return The determination, true or false.
     */
    boolean isAcceptCookieTimeZone();
    /**
     * Find business time-zone. (prevails over cookie)
     * @param executeMeta The meta of action execution which you can get the calling method. (NotNull)
     * @param requestManager The manager of request to find your time-zone. (NotNull)
     * @return The found time-zone by your business rule. (NullAllowed: if null, not found)
     */
    TimeZone findBusinessTimeZone(ActionExecuteMeta executeMeta, RequestManager requestManager);
    /**
     * Get the requested time-zone. (for when not found in session or cookie) 
     * Unfortunately we cannot get time-zone from request, provider needs to provide the default time-zone
     * @param requestManager The manager of request to find your time-zone. (NotNull)
     * @return The time-zone as default by your business rule. (NotNull)
     */
    TimeZone getRequestedTimeZone(RequestManager requestManager);
    /**
     * Get the fall-back time-zone. (for no time-zone everywhere)
     * @return The fixed instance of time-zone, might be cached. (NullAllowed: if null, server time-zone)
     */
    TimeZone getFallbackTimeZone();
}
