Предпочтительным способом установки этого расширения является composer
Либо выполните
Код: Выделить всё
composer require --prefer-dist cetver/yii2-language-selector
Код: Выделить всё
"cetver/yii2-language-selector": "^1.0"
Использование
Bootstrap Nav
Код: Выделить всё
Yii::$app->language = 'en';
$languageItem = new cetver\LanguageSelector\items\DropDownLanguageItem([
'languages' => [
'en' => '<span class="flag-icon flag-icon-us"></span> English',
'ru' => '<span class="flag-icon flag-icon-ru"></span> Russian',
'de' => '<span class="flag-icon flag-icon-de"></span> Deutsch',
],
'options' => ['encode' => false],
]);
\yii\bootstrap\NavBar::begin([
'brandLabel' => 'My Company',
'brandUrl' => Yii::$app->homeUrl,
]);
echo \yii\bootstrap\Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
$languageItem->toArray()
]
]);
\yii\bootstrap\NavBar::end();
Bootstrap Drop-Down Button
Код: Выделить всё
Yii::$app->language = 'en';
$languageItem = new cetver\LanguageSelector\items\DropDownLanguageItem([
'languages' => [
'en' => '<span class="flag-icon flag-icon-us"></span> English',
'ru' => '<span class="flag-icon flag-icon-ru"></span> Russian',
'de' => '<span class="flag-icon flag-icon-de"></span> Deutsch',
],
'options' => ['encode' => false],
]);
$languageItem = $languageItem->toArray();
$languageDropdownItems = \yii\helpers\ArrayHelper::remove($languageItem, 'items');
echo \yii\bootstrap\ButtonDropdown::widget([
'label' => $languageItem['label'],
'encodeLabel' => false,
'options' => ['class' => 'btn-default'],
'dropdown' => [
'items' => $languageDropdownItems
]
]);
Menu
Код: Выделить всё
$languageItems = new cetver\LanguageSelector\items\MenuLanguageItems([
'languages' => [
'en' => '<span class="flag-icon flag-icon-us"></span> English',
'ru' => '<span class="flag-icon flag-icon-ru"></span> Russian',
'de' => '<span class="flag-icon flag-icon-de"></span> Deutsch',
],
'options' => ['encode' => false],
]);
echo \yii\widgets\Menu::widget([
'options' => ['class' => 'list-inline'],
'items' => $languageItems->toArray(),
]);
Настройка
Drop-Down
Код: Выделить всё
new cetver\LanguageSelector\items\DropDownLanguageItem([
// список доступных языков
'languages' => [
'en' => 'English',
'ru' => 'Russian',
'de' => 'Deutsch',
],
/*
или
'languages' => function () {
return \app\models\Language::find()
->select(['code', 'name'])
->createCommand()
->queryAll(\PDO::FETCH_KEY_PAIR);
},
*/
// Параметры элемента виджета выпадающего списка, исключая «label» и «url»
// @see \yii\bootstrap\Nav::$items
// @see \yii\bootstrap\Dropdown::$items
'options' => [
'visible' => true
]
]);
Код: Выделить всё
new cetver\LanguageSelector\items\MenuLanguageItems([
// список доступных языков
'languages' => [
'en' => 'English',
'ru' => 'Russian',
'de' => 'Deutsch',
],
/*
или
'languages' => function () {
return \app\models\Language::find()
->select(['code', 'name'])
->createCommand()
->queryAll(\PDO::FETCH_KEY_PAIR);
},
*/
// Параметры элемента виджета меню, исключая «label», «url» и «active»
// @see \yii\widgets\Menu::$items
'options' => [
'visible' => true
]
]);
Выполните следующие команды
Код: Выделить всё
composer create-project --prefer-source cetver/yii2-language-selector
cd yii2-language-selector
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)