2014-01-11 3 views
0

Я новичок в zend framework, и я нахожу очевидную проблему, с которой вы встречаетесь, когда используете ее в первый раз. Теперь я устанавливаю функцию перевода, и, чтобы убрать язык сайта, я разместил два флага, один для языка сайта, а другой с английским флагом. Он должен работать таким образом, я уже создал определенный контроллер:Zend Translate/locale/set/en не найден на этом сервере

<?php 

class LocaleController extends Zend_Controller_Action 
{ 

    public function init() 
    { 
     // init code  
    } 

    public function indexAction() 
    { 
    // action body 
    } 

    public function setAction() 
    { 
    // if supported locale, add to session 
    if (Zend_Validate::is($this->getRequest()->getParam('locale'), 'InArray', 
      array('haystack' => array('en', 'it')))) 
    { 
     $session = new Zend_Session_Namespace('ttb.l10n'); 
     $session->locale = $this->getRequest()->getParam('locale'); 
    } 
    // redirect to requesting URL 
    $url = $this->getRequest()->getServer('HTTP_REFERER'); 
    $this->_redirect($url); 
    } 


} 

В контроллере локали, я написал «установить» действие, которое принимает на «EN» и «ее» параметры. (Я установил файл Bootstrap для перевода, я вставьте его ниже, но страница не найдена. Должен ли я написать представление для этого контроллера? Не могу ли я просто загрузить страницу индекса с нужным языком? ? как я добиться того, что

protected function _initLocale() 
{ 
$session = new Zend_Session_Namespace('ttb.l10n'); 
if ($session->locale) 
{ 
    $locale = new Zend_Locale($session->locale); 
} 
if ($locale === null) 
{ 
    try 
    { 
     $locale = new Zend_Locale('browser'); 
    } 
    catch (Zend_Locale_Exception $e) 
    { 
     $locale = new Zend_Locale('en'); 
    } 
} 
$registry = Zend_Registry::getInstance(); 
$registry->set('Zend_Locale', $locale); 
} 

protected function _initTranslate() 
{ 
    $translate = new Zend_Translate('array', 
      APPLICATION_PATH . '/../languages/', 
      null, 
      array('scan' => Zend_Translate::LOCALE_FILENAME, 
        'disableNotices' => 1)); 
    $registry = Zend_Registry::getInstance(); 
    $registry->set('Zend_Translate', $translate); 
} 

Затем в файле IndexController.php я есть:

public function init() 
{ 
    /* Initialize action controller here */ 
    $registry = Zend_Registry::getInstance(); 
    $this->view->locale = $registry->get('Zend_Locale'); 
} 

Тогда в layout.phtml я есть ссылки:

 <a href="/locale/set/it"><img src="<?php echo $this->baseUrl(); ?>/immagini/flag/italia.png" title="Italiano"></a>  
     <a href="/locale/set/en"><img src="<?php echo $this->baseUrl(); ?>/immagini/flag/inghilterra.png" title="English"></a> 

I» m с использованием zend framework 1.12 ...

ответ

0

я должен был изменить ссылки на следующие:

 <a href="<?php echo $this->baseUrl(); ?>/locale/set/it"><img src="<?php echo $this->baseUrl(); ?>/immagini/flag/italia.png" title="Italiano"></a>  
     <a href="<?php echo $this->baseUrl(); ?>/locale/set/en"><img src="<?php echo $this->baseUrl(); ?>/immagini/flag/inghilterra.png" title="English"></a> 
Смежные вопросы