dir: components file: SetLanguages.php
namespace app\components;
class SetLanguages extends \yii\base\Behavior {
public function events(){
return [ \yii\web\Application::EVENT_BEFORE_REQUEST => 'set' ]; }
public function set() {
if (\Yii::$app->session->has('language')) {
\Yii::$app->language = \Yii::$app->session->get('language');
} }
}
?>
dir: config file: params.php
return [
...
'language' => [
'uz' => 'UZ',
'ru' => 'RU',
'en' => 'EN',
];
dir: config file: web.php
$config = [
...,
‘components’ => [
'i18n' => [
'translations' => [
'app*' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@app/languages',
'fileMap' => [
'app' => 'app.php',
'app/error' => 'error.php',
],
],
],
],
...,
'as beforeRequest' => [
'class' => 'app\components\SetLanguages',
],
];
|
dir: controllers file: SiteController.php
...
public function actionLanguage(){
if (Yii::$app->request->get('lang')) {
$lang = Yii::$app->request->get('lang');
Yii::$app->session->set('language', $lang);
Yii::$app->language = $lang;
return $this->redirect(Yii::$app->request->referrer);
}
else {
return $this->render('language');
}
}
dir: languages
dir: en file: app.php dir: ru file: app.php dir: uz file: app.php
return [
'title' => 'Title',
'content' => 'Content',
'language' => 'English',
...
];
?>
|
return [
'title' => 'Заглавие',
'content' => 'Содержание',
'language' => 'Русский',
...
];
?>
|
return [
'title' => 'Sarlavha',
'content' => 'Tarkibi',
'language' => "O'zbek",
...
];
?>
|
dir: views/site file: language.php
use yii\helpers\Url;
foreach (Yii::$app->params['language'] as $key => $value) {
echo " $key]).">".$value."";
}
echo 'Session: '.Yii::$app->session->get('language');
echo 'language: '.Yii::$app->language;
?>
=Yii::t('app', 'title');?>
=Yii::t('app', 'content');?>
=Yii::t('app', 'language');?>
|