return [ 'language'=>'en', // , . 'components' => [ 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'class' => 'frontend\widgets\MultiLang\components\UrlManager', // . . 'languages' => ['ru', 'en'], // 'enableDefaultLanguageUrlCode' => true, // , false, www.site.com/ , true – www.site.com/ru 'rules'=>[ '/' => 'site/index', '<controller:\w+>/<action:\w+>/'=>'<controller>/<action>', ], ], 'i18n' => [ 'translations' => [ 'app*' => [ // app php app.php ( ) 'class' => 'yii\i18n\PhpMessageSource', 'basePath' => '@frontend/messages', // frontend/messages/ru/app.php 'sourceLanguage' => 'en', // , , ], ], ], ],
return [ ... 'Example text...' => ' ...', ... ];
<?= Yii::t('app', 'Example text...') ?>
Frontend\ Widgets\ MultiLang\ Components\ UrlManager.php Views\ View.php MultiLang.php
<?= MultiLang::widget(['cssClass'=>'pull-right language']); ?>
use frontend\widgets\MultiLang\MultiLang;
<?php namespace frontend\widgets\MultiLang; use yii\helpers\Html; class MultiLang extends \yii\bootstrap\Widget { public $cssClass; public function init(){} public function run() { return $this->render('view', [ 'cssClass' => $this->cssClass, ]); } }
<?php namespace frontend\widgets\MultiLang; use yii\helpers\Html; use Yii; ?> <div class="btn-group <?= $cssClass; ?>"> <a class="btn dropdown-toggle" data-toggle="dropdown" href="#"> <span class="uppercase"><?= Yii::$app->language; ?></span> <span class="caret"></span> </a> <ul class="dropdown-menu"> <li class="item-lang"> <?= Html::a('Go to English', array_merge( \Yii::$app->request->get(), [\Yii::$app->controller->route, 'language' => 'en'] )); ?> </li> <li class="item-lang"> <?= Html::a(' ', array_merge( \Yii::$app->request->get(), [\Yii::$app->controller->route, 'language' => 'ru'] )); ?> </li> </ul> </div>
Source: https://habr.com/ru/post/317828/
All Articles