yii2-language-selector - предоставляет конфигурацию для виджетов, которые используются для переключения языка

Выкладываем свои наработки
Ответить
cetver
Сообщения: 8
Зарегистрирован: 2017.05.23, 22:52

yii2-language-selector - предоставляет конфигурацию для виджетов, которые используются для переключения языка

Сообщение cetver »

Установка

Предпочтительным способом установки этого расширения является composer

Либо выполните

Код: Выделить всё

composer require --prefer-dist cetver/yii2-language-selector
или добавьте

Код: Выделить всё

"cetver/yii2-language-selector": "^1.0"
в раздел require вашего файла composer.json.

Использование

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
    ]
]);
Menu

Код: Выделить всё

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
Для поддержки интернационализации (I18N), ознакомьтесь с
Ответить