Допустим у сайта настройка языка "ru"
Есть 3 модуля
У каждого модуля есть свои языковые файлы: en, ru, cz, ua
Как сделать чтобы у всех были разные языки и между ними можно было переключаться
У сайта оставить ru, а у модуля админ например в зависимости от cookie en или ua
Может у модуля где то тоже есть настройка language?
Page 1 of 1
Многоязычные Модули
#2
Posted 15 February 2013 - 03:17 PM
У модуля настройки language нет, но ведь можно при наследовании от CWebModule ввести public-свойство language, соотв. тогда можно будет его задавать в настроке модуля в файле конфигурации.
Если нужно определять язык динамически, то можно это сделать в модуле в методе init():
ну а в файле конфигурации приложения укажем:
в результате получим язык например из cookie, если же не смогли определить из cookie, но указали в конфиге модуля - из конфига (Английский), ну а если не указан в конфиге - то по-умолчанию (Украинский).
Если нужно определять язык динамически, то можно это сделать в модуле в методе 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, но указали в конфиге модуля - из конфига (Английский), ну а если не указан в конфиге - то по-умолчанию (Украинский).
Share this topic:
Page 1 of 1

Help











