Многоязычные Модули

Допустим у сайта настройка языка "ru"

Есть 3 модуля

У каждого модуля есть свои языковые файлы: en, ru, cz, ua

Как сделать чтобы у всех были разные языки и между ними можно было переключаться

У сайта оставить ru, а у модуля админ например в зависимости от cookie en или ua

Может у модуля где то тоже есть настройка language?

У модуля настройки language нет, но ведь можно при наследовании от CWebModule ввести public-свойство language, соотв. тогда можно будет его задавать в настроке модуля в файле конфигурации.

Если нужно определять язык динамически, то можно это сделать в модуле в методе init():




class MyModule extends CWebModule {

  public $language = 'ua';

  public function init() {

    parent::init();

    Yii::app()->language = $this->selectLanguage();

  }

 /**

  * В этом методе мы определяем требуемый язык, берем хоть из cookie, хоть из базы данных:

  * @return string

  */

  private function selectLanguage() {

    ....

    // предположим что язык определить не удалось, тогда возвращает таковой по-умолчанию:

    return $language ? $language : $this->language;

  }

}



ну а в файле конфигурации приложения укажем:




....

modules => array(

  ....

  'my' => array(

     ....

     'language' => 'en',

     ....

  ),

  ....

),

....



в результате получим язык например из cookie, если же не смогли определить из cookie, но указали в конфиге модуля - из конфига (Английский), ну а если не указан в конфиге - то по-умолчанию (Украинский).