Your IP : 216.73.216.79


Current Path : /var/www/html/learn/common/components/
Upload File :
Current File : /var/www/html/learn/common/components/LanguageSwitcher.php

<?php
namespace common\components;

use Yii;
use yii\base\Widget;
use yii\helpers\Url;
use yii\helpers\Html;
use backend\models\i18n\DmgI18nMessage;

class LanguageSwitcher extends Widget
{

    /* bundleBase */
    public $bundleBase;

    public $languages;

    public function init()
    {
        $this->languages = DmgI18nMessage::$languages;
        if (php_sapi_name() === 'cli') {
            return true;
        }

        parent::init();

        $cookies = Yii::$app->response->cookies;
        $getCookies = Yii::$app->request->cookies;
        $languageNew = Yii::$app->request->get('language');
        if ($languageNew) {
            if (isset($this->languages[$languageNew])) {
                Yii::$app->language = $languageNew;
                $cookies->add(new \yii\web\Cookie([
                    'name' => 'language',
                    'value' => $languageNew
                ]));
            }
        } elseif ($getCookies->get('language') !== null) {
            Yii::$app->language = $getCookies->getValue('language');
        }
    }

    public function run()
    {
        $languages = $this->languages;
        $current = $languages[Yii::$app->language];
        unset($languages[Yii::$app->language]);

        $items = [];
        foreach ($languages as $code => $language) {
            $temp = [];
            $temp['label'] = $language['label'];
            $temp['flag'] = $language['flag'];
            $temp['url'] = Url::current([
                'language' => $code
            ]);
            array_push($items, $temp);
        }

        if (count($items) > 0) {
            foreach ($items as $itmk) {
                $flagItem[] = "<li>
                                    <div class='dropdown-messages-box'>"
                                     . Html::a("<img class='language-flag' src='" . $this->bundleBase . "/img/flags/32/" . $itmk['flag'] . ".png'>", $itmk['url'], ['title' =>  $itmk['label'], 'style'=>'padding:0']) . "
                                    </div>
                               </li>
                               ";
            }
            $fitem = implode('<div class="divider"></div>', $flagItem);
        }

        return '<li class="dropdown langswitch">
                    <a class="dropdown-toggle count-info" data-toggle="dropdown" href="#" aria-expanded="false" style="padding:10px">
                        <img class="language-flag" src="' . $this->bundleBase . '/img/flags/32/' . $current['flag'] . '.png" title="' . $current['label'] . '">
                    </a>
                    <ul class="dropdown-menu dropdown-messages animated fadeInRight" style="width:100%">
                        ' . $fitem . '
                    </ul>
                </li>';
    }
}