2016-01-05 5 views
0

Я делал перевод для своего сайта с помощью i18n и переводил поведение.Cakephp 2.6 интернационализация

Как только пользователь нажмет на кнопку изменения языка. Весь текст и записи будут показаны на китайском языке.

Но

, когда пользователь нажимает на других страницах, только текст переведен через i18n еще отображая на китайском. Записи базы данных показывают оригинал, который является английским.

это код в AppController

function beforeFilter() { 
    $this->_setLanguage(); 
} 

private function _setLanguage() { 

//if the cookie was previously set, and Config.language has not been set 
//write the Config.language with the value from the Cookie 
    if ($this->Cookie->read('lang') && !$this->Session->check('Config.language')) { 
     $this->Session->write('Config.language', $this->Cookie->read('lang')); 
    } 

//if the session was previously set, and cookie language has not been set 
//write the cookie language with the value from the session 

    else if (!$this->Cookie->read('lang') && $this->Session->check('Config.language')) { 
     $this->Cookie->write('lang', $this->Session->read('Config.language')); 
    } 
    //if the user clicked the language URL 

    if (isset($this->params['language'])) { 
     //then update the value in Session and the one in Cookie 
     $this->Session->write('Config.language', $this->params['language']); 
     $this->Cookie->write('lang', $this->params['language'], false, '20 days'); 
    } 
} 

Мне интересно, где я пошло не так?

Может ли кто-нибудь помочь?

Благодаря

+1

Пожалуйста, всегда указывайте точную версию CakePHP, что вы используете! Также, пожалуйста, покажите, как/где вы устанавливаете фактическое значение 'Config.language' [** configuration **] (http://book.cakephp.org/2.0/en/development/configuration.html#configure-class) (не значение сеанса)! – ndm

ответ

1

I18n::translate() использует в случае сете Configure.language session value over the configuration value, но поведение переводить не будет, это relies on the configuration value только.

Похоже, вы не установили значение конфигурации Configure.language (Configure::write('Config.language', $language)), и, таким образом, поведение перевода будет использовать значение по умолчанию, определенное в вашей конфигурации (в случае присутствия), поэтому не будет считан переведенный контент.

Смотрите также