申し訳ありませんが、あなたが提案していることは悪い考えです。ブートストラップは、必要な設定、変数などを初期化することによって、ライブラリを動作状態にすることを目的としています。
ブートストラッパーがすべきこと:
- 「include_path」にカスタム パスを追加します
- 文字セット (UTF-8) とエンコード ディレクティブ (mb_internal_encoding) を初期化します。
- ロガーの初期化 (エラーまたはアプリのログ記録)
- オートローダーの初期化
アプリケーションは、コントローラー層で要件を処理する必要があります。たとえば、ユーザーが example.com/controller/action/en-US にアクセスした場合、コントローラーはリクエスト オブジェクト (および指定されたパラメーター) にアクセスすることでそれに応じて言語を設定し、現在および後続のページを英語で表示するようにユーザー セッション変数を設定できます。 .
- 編集 -
中間クラスを使用して i18n/ロケール設定を初期化するための実装例と、値をブートストラップに渡すための実装例:
// Controller
$i18n = new i18n();
$i18n->setLocale($this->getRequest()->getParameter('locale'));
// Now I can make locale specific calls to validate localized data
$i18n->validateDate($this->getRequest()->getParameter('date'));
// Can also make queries for locale specific data
$results = $i18n->getDob()->query('select * from my_table');
// i18n class
class i18n
{
protected $locale;
public function setLocale($locale)
{
$this->locale = $locale;
}
public function getLocale()
{
return $this->locale;
}
// Factory method for creating a database object based on locale
public function getDbo()
{
switch ($this->getLocale()) {
case 'en-US':
return new Zend_Db::factory('Pdo_Mysql', array(
'host' => 'hostname',
'username' => 'username',
'password' => 'password',
'dbname' => 'en_us_locale'
));
case 'en-GB':
return new Zend_Db::factory('Pdo_Mysql', array(
'host' => 'hostname',
'username' => 'username',
'password' => 'password',
'dbname' => 'en_gb_locale'
));
}
}
}