現在、私は以下のような翻訳プラグインを備えたzendアプリケーションを持っています
class Zc_Controller_Plugin_LangSelector extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $req)
{
$lang = $req->getParam('lang','');
if($lang !== 'en' && $lang !== 'de')
$req->setParam('lang','en');
$state = $req->getParam('state');
$lang = $req->getParam('lang');
if($lang == 'en')
$zl = new Zend_Locale();
$zl->setLocale($locale);
Zend_Registry::set('Zend_Locale',$zl);
$translate = new Zend_Translate('csv',APPLICATION_PATH.'/configs/lang/'.$lang.'.csv',$lang);
Zend_Registry::set('Zend_Translate',$translate);
}
}
また、次のようにapplication.iniでプラグインを有効にしました
resources.frontController.plugins.DetectCountry =
"Zc_Controller_Plugin_LangSelector"
langという名前のフォルダーを作成し、その中にen.csvとfr.csvという名前の別の2つのファイルを作成しました。現在、翻訳は.csvファイルから読み取られますが、dbから直接読み取り/書き込みするための翻訳が必要なので、db.Thanksから直接新しいKeyValueフィールドを追加/削除することができます。