Установка пользовательских языковых предпочтений тривиальна.Просто добавьте поле language
в пользовательскую таблицу и разрешите пользователю где-нибудь установить для нее значение.В вашем приложении вы устанавливаете язык по умолчанию в core.php
, используя Configure::write('Config.language', 'eng')
, и переопределяете его где-то еще, лучше всего в AppController::beforeFilter
:
public function beforeFilter() {
if ($this->Auth->user('language')) {
Configure::write('Config.language', $this->Auth->user('language'));
}
}
Теперь все функциональные возможности Cake L10n будут выводить контент ввыбранный пользователем язык.
Если вам нужна дополнительная языковая логика, которая не покрывается Cake, возможно, вам придется реализовать ее самостоятельно.Я бы посоветовал вам открыть новый конкретный вопрос о ваших конкретных проблемах.Как правило, любая логика пользовательского языка будет основываться на значении Configure::read('Config.language')
.Например, если у вас есть продукты с описаниями на нескольких языках, вы можете иметь отношение Product
hasMany Description
, где каждый Description
имеет атрибут language
, по которому вы фильтруете.