Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 34
LanguageSwitch
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
72.00
0.00% covered (danger)
0.00%
0 / 34
 init
0.00% covered (danger)
0.00%
0 / 1
30.00
0.00% covered (danger)
0.00%
0 / 24
 mapCountry
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 10
<?php
/**
 * @copyright Copyright (c) 2015 Maciej Klemarczyk
 * @license MIT License
 */
namespace common\widgets;
use Yii;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\helpers\Url;
/**
 * Banner widget renders an img tag with banner image for given key.
 *
 * @author Maciej Klemarczyk <m.klemarczyk@live.com>
 */
class LanguageSwitch extends \yii\bootstrap\Widget
{
    public $options = [];
    public function init()
    {
        parent::init();
        $currentLanguage = Yii::$app->language;
        $languages = Yii::$app->contentNegotiator->languages;
        $options = ArrayHelper::merge(
            $this->options,
            ['id' => 'switch-languages']
        );
        if (!empty($languages) && count($languages) > 1) {
            echo Html::beginTag('div', $options);
            echo Yii::t('app', 'Switch language:');
            foreach ($languages as $langKey) {
                echo ' ';
                if ($langKey !== $currentLanguage) {
                    $countryKey = $this->mapCountry($langKey);
                    echo Html::beginTag('a', ['href' => Url::current(['_lang' => $langKey])]);
                    echo Html::tag('span', '', ['class' => "flag-icon flag-icon-$countryKey"]);
                    echo Html::endTag('a');
                }
            }
            echo Html::tag('img');
            echo Html::endTag('div');
        }
    }
    private function mapCountry($language)
    {
        switch ($language) {
            case 'cs':
                return 'cz';
            case 'en':
                return 'gb';
            default:
                return $language;
        }
    }
}