yii语言切换

第一步:我们在@app/messages可以作为我们存放不同语言文件的文件夹,在该文件夹下面建立对应的语言文件夹,比如zh-CN文件夹,代表中文,那么我们现在在文件夹下面建立一个语言文件,叫language.php。那么在@app/messages/zh-CN/language.php:

<?php

return [

'Language' => '语言',

'Chinese' => '中文',

'English' => '英文',

];

第二步:添加语言包配置/frontend/config/main.php

return [
    'language'=>'zh-CN',               //这个配置别漏了,选择中文语言包
      
      ...
               
     'components' => [
        
        ...
              
'i18n' => [
    'translations' => [
        'English' => [
            'class' => 'yii\i18n\PhpMessageSource',
           // 'basePath' => '/messages/English',
            'fileMap' => [
                'English' => 'language.php',
            ],
        ],
        'zh-CN' => [
            'class' => 'yii\i18n\PhpMessageSource',
           // 'basePath' => '/messages/zh-CN',
            'fileMap' => [
                'zh-CN' => 'language.php',
            ],
        ],
    ],
],
      ]
]

第三部:

视图文件就有些地方需要改变一下,其他不变,变成如下:

[

'label' => Yii::t('language','Language'),

'dropDownOptions' => ['id' => 'drow-language','style' => 'min-width:90px;'],

'items' => [

['label' => Yii::t('language','Chinese'), 'url' =>['/order/language', 'language' =>'zh-CN']],

['label' => Yii::t('language','English'), 'url' =>['/order/language', 'language' => 'en-US']],

],

第四部:控制器方法

public function actionLanguage($language) {

$session = Yii::$app->session;

$session->open();

if(isset($language)){

Yii::$app->session['language'] = $language;

}

//切换完语言哪来的返回到哪里,即reload

$this->goBack(Yii::$app->request->headers['Referer'])

}

最后:

语言版本的值就保存在session中,那么在入口文件处也要做处理:

$application = new yii\web\Application($config);
$application->language = isset(Yii::$app->session['language']) ? Yii::$app->session['language'] : 'zh-CN';
$application->run();
 

猜你喜欢

转载自blog.csdn.net/qq_39240830/article/details/81536616