Извините, но то, что вы предлагаете, является плохой идеей. Начальная загрузка предназначена для приведения библиотеки в рабочее состояние путем инициализации необходимых настроек, переменных и т. Д.
Некоторые вещи, которые должен делать загрузчик:
- Добавление пользовательских путей к 'include_path'
- Инициализировать наборы символов (UTF-8) и директивы кодирования (mb_internal_encoding)
- Инициализация регистраторов (регистрация ошибок или приложений)
- Инициализация автозагрузчиков
Ваше приложение должно обрабатывать ваши требования на уровне контроллера. Например, если пользователь заходит на сайт example.com/controller/action/en-US, ваш контроллер может установить язык соответствующим образом, открыв объект запроса (и указанный параметр) и установив переменную сеанса пользователя для отображения текущей и последующих страниц на английском языке. .
- Правка -
Пример реализации для инициализации настроек i18n / locale с использованием промежуточного класса и передачи значений в начальную загрузку:
// 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'
));
}
}
}