2012-04-26 2 views
0

Мой сайт находится в 2-х языках (английский и итальянский)CakePHP изменить язык на лету

Мой SiteMessagesController.php код контроллера:

public function index() { 
    $this->SiteMessage->locale = 'it'; 
    $this->SiteMessage->recursive = 0; 
    $this->set('siteMessages', $this->paginate()); 
} 

Приведенный выше код показывает все сообщения в итальянской language from database. Если I comment 1-я строка кода, тогда он будет показывать сообщения на английском языке.

Если я иду с этим на весь сайт, я должен написать строку $this->SiteMessage->locale = 'it'; до $this->ModelName->find(); в каждом действии каждого контроллера.

Есть ли способ установить $locale на 'it' для каждой модели?

+0

Ваш вопрос сбивает с толку. Я бы догадался, что ответ @dr Hannibal Lecter был тем, что вы искали. – Dave

ответ

0

положить локаль в AppModel.

например: Это один для английского
public $locale = 'en_us';

+2

Я сказал «на лету». :) – gautamlakum

1

Если вы спрашиваете, что я думаю, что вы спрашиваете, это будет делать:

Configure::write('Config.language', 'ita'); 

Если вы поместите это где-то, как ваш AppController::beforeFilter() он должен работать для всего приложения, а не для отдельных моделей или запросов. Для получения дополнительной информации см. Книгу на странице I18n and L10n.

+0

Он не работает с базой данных. – gautamlakum

+0

@lakumg: Вы уверены, что вы где-то не переопределяете? На странице, с которой я связан, явным образом заявляю, что эта строка предназначена для этого. –

+0

Я использую поведение перевода (http://book.cakephp.org/2.0/en/core-libraries/behaviors/translate.html). Таким образом, ваш ответ не будет работать с ним. – gautamlakum