죄송하지만, 당신이 제안하는 것은 좋지 않은 생각입니다.
,
애플리케이션이 컨트롤러 레이어에서 요구 사항을 처리해야합니다. 예를 들어 사용자가 example.com/controller/action/en-US를 방문하면 컨트롤러는 요청 객체 (및 지정된 매개 변수)에 액세스하여 언어를 적절히 설정하고 사용자 세션 var을 설정하여 현재 페이지와 이후 페이지를 영어로 표시 할 수 있습니다 .
- 편집 - 부트 스트랩 통과 값 대 중간 클래스를 사용하여 국제화/로케일 설정을 초기화
예 구현 :
// 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'
));
}
}
}
괜찮 으면 좋겠지 만 경로, 데이터베이스 등을 포함한 내 리소스의 일부 구성이 있다면 어떻게 될까요?locale 매개 변수에 따라 변경됩니다. 부트 스트랩에서 초기화 할 수 없기 때문입니다. 컨트롤러 플러그인에서 모두 초기화해야합니까? 나는 이것이 좋은 생각이라고 생각하지 않습니까? –
상위 수준의 부트 스트랩 클래스를 생성 할 수 있습니다. 요청 객체를 전달한 다음 현재 값에 따라 include_path 및 데이터베이스 연결을 초기화합니다. 끝내기 게임은 기본 부트 스트랩에 요청 레벨 데이터를 전달하지 않는 것입니다. 가능한 한 벙어리가되어야하며 사용을 위해 라이브러리 만 초기화해야하기 때문입니다. –
네, 아마도 이것은 좋은 해결책이 될 수 있습니다. 컨트롤러 플러그인을 부트 스트랩으로 만들고 여기에 일부 부트 스트랩 리소스를 변경하거나 초기화하십시오. –