You can do it easy manually in Yii2 without any extensions:
1) Inside config/web.php change you rule (for example)
from
'rules' =>[
[
'pattern' => '',
'route' => 'main/index',
'suffix' => ''
],
]
to (add rule for language)
'rules' =>[
[
'pattern' => '',
'route' => 'main/index',
'suffix' => ''
],
'<language:\w{2}>'=>'main/index',
]
do the same for other rules if you have (for example)
[
'pattern' => '<controller>/<action>/<id:\w+>',
'route' => '<controller>/<action>',
'suffix' => ''
],
[
'pattern' => '<language:\w{2}>/<controller>/<action>/<id:\w+>',
'route' => '<controller>/<action>',
'suffix' => ''
],
2) Imagine that we have 3 landuages: ru, en, kz.
And all controllers extends our BehaviorsController.php (example, class MainController extends BehaviorsController
)
Inside BehaviorsController.php create beforeAction() function
public function beforeAction($action)
{
$language = Yii::$app->getRequest()->getQueryParam('language');
if($language){
if(in_array($language,Yii::$app->params['langs'])) Yii::$app->session->set('lang',$language);
Yii::$app->language = $language;
}
return parent::beforeAction($action);
}
3) Inside config/params.php add langs key to array
return [
... // some params
'langs' => ['RU' => 'ru','KZ' => 'kz','EN' => 'en'], //allowed languages
];
4) That's it. Now we can check the path using language param:
example.com/ru
or
example.com/en