Предпочтительным способом установки этого расширения является composer
Либо выполните
Код: Выделить всё
composer require --prefer-dist cetver/yii2-languages-dispatcher
Код: Выделить всё
"cetver/yii2-languages-dispatcher": "^1.0"
Использование
Обновите файл конфигурации веб-приложения
Код: Выделить всё
return [
'bootstrap' => ['languagesDispatcher'],
'components' => [
'languagesDispatcher' => [
'class' => 'cetver\LanguagesDispatcher\Component',
'languages' => ['en', 'ru'],
/*
или
'languages' => function () {
return \app\models\Language::find()->select('code')->column();
},
*/
// Порядок важен
'handlers' => [
[
// Обнаруживает язык из параметра запроса.
'class' => 'cetver\LanguagesDispatcher\handlers\QueryParamHandler',
'request' => 'request', // необязателен, ID компонента Request.
'queryParam' => 'language' // необязателен, имя параметра запроса, которое содержит язык.
],
[
// Обнаруживает язык в сессии (сеансе).
// Записывает язык в сессию, независимо от того, какой обработчик обнаружил его.
'class' => 'cetver\LanguagesDispatcher\handlers\SessionHandler',
'session' => 'session', // необязателен, ID компонента Session.
'key' => 'language' // необязателен, Ключ сессии, содержащий язык.
],
[
// Обнаруживает язык в cookie.
// Записывает язык в cookie, независимо от того, какой обработчик обнаружил его.
'class' => 'cetver\LanguagesDispatcher\handlers\CookieHandler',
'request' => 'request', // необязателен, ID компонента Request.
'response' => 'response', // необязателен, ID компонента Response.
'cookieConfig' => [ // необязателен, Конфигурация для компонента Cookie.
'class' => 'yii\web\Cookie',
'name' => 'language',
'domain' => '',
'expire' => strtotime('+1 year'),
'path' => '/',
'secure' => true | false, // зависит от Request::$isSecureConnection
'httpOnly' => true,
]
],
[
// Обнаруживает язык у аутентифицированного пользователя.
// Сохраняет язык аутентифицированному пользователю, независимо от того, какой обработчик обнаружил его.
// Примечание: свойство "identityClass" компонента "User" должно быть экземпляром класса "\yii\db\ActiveRecord"
'class' => 'cetver\LanguagesDispatcher\handlers\UserHandler',
'user' => 'user', // необязателен, ID компонента User.
'languageAttribute' => 'language_code' // необязателен, атрибут, содержащий язык.
],
[
// Обнаруживает язык из заголовка «Accept-Language».
'class' => 'cetver\LanguagesDispatcher\handlers\AcceptLanguageHeaderHandler',
'request' => 'request', // необязателен, ID компонента Request.
],
[
// Обнаруживает язык из свойства "language".
'class' => 'cetver\LanguagesDispatcher\handlers\DefaultLanguageHandler',
'language' => 'en' // язык по умолчанию.
/*
или
'language' => function () {
return \app\models\Language::find()
->select('code')
->where(['is_default' => true])
->createCommand()
->queryScalar();
},
*/
]
],
],
],
];
Выполните следующие команды
Код: Выделить всё
composer create-project --prefer-source cetver/yii2-languages-dispatcher
cd yii2-languages-dispatcher
vendor/bin/codecept run unit
- https://github.com/cetver/yii2-languages-dispatcher - устанавливает язык веб-приложения
- https://github.com/cetver/yii2-language-url-manager - разбирает и создает URL-адреса, содержащие язык
- https://github.com/cetver/yii2-language-selector - предоставляет конфигурацию для виджетов, которые используются для переключения языка
- https://github.com/creocoder/yii2-translateable - Поведение для переводов (Active Record)