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();
}