Mojavi2、こんなFilterはどうだろうか。

<?php
class MessageFilter extends Filter {
    function execute(&$filterChain, &$controller, &$request, &$user) {
        if ($request->hasAttribute("messages") === false) {
            // global messages
            $globalMessagesPath = BASE_DIR."configs/messages_".DEFAULT_LANG.".ini";
            if (is_readable($globalMessagesPath)) {
                $messages = parse_ini_file($globalMessagesPath);
            }
        }
            // module messages
            $messagesPath = $controller->getModuleDir()."config/messages_".DEFAULT_LANG.".ini";
            if (is_readable($messagesPath)) {
                $messages = array_merge($messages, array($controller->getCurrentModule() => parse_ini_file($messagesPath)));
            }

            $filterChain->execute($controller, $request, $user);
        }
    }
}
?>

messages_ja.ini, messages_en.iniとか置いといて読み込むことで多言語化の枠組みを提供するFilter。

アプリ共通のiniとモジュール毎のiniを両方読み込む。
strutsのように環境変数から勝手に切り替えるようにしたいんだけどHTTP_ACCEPT_LANGUAGEのパースが面倒臭い。MojaviのRequestにもServletRequest.getLocale()があれば・・・。

Comments


Option