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();
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值