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()があれば・・・。