yii2框架-多语言版本切换

5 篇文章 0 订阅

首先我们要知道yii2框架是以英文作为源语言的,其他的语言作为目标语言的。所以在语言文件中是一对多的关系,源语言对应多种需要转换的目标语言,也就是有多个不同的语言版本。

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

<?php
return [
     'Language' => '语言',
     'Chinese' => '中文',
     'English' => '英文',
];


我们可以在视图文件上利用use yii\bootstrap\NavBar;
use yii\bootstrap\Nav;来完成。

<?php

NavBar::begin([
    'brandLabel' => '',
    'brandUrl' => Yii::$app->homeUrl,
    'options' => [
        'class' => 'navbar-inverse navbar-fixed-top',
    ],
]);
//下拉选择语言变换界面内容
echo Nav::widget([
    'options' => ['class' => 'navbar-nav navbar-right'],
    'items' => [
       
        [
             'label' => Yii::t('app','Language'),
              'dropDownOptions' => ['id' => 'drow-language','style' => 'min-width:90px;'],
              'items' => [
                     ['label' => Yii::t('app','Chinese'), 'url' =>['/site/language', 'language' =>'zh-CN']],
                     ['label' => Yii::t('app','English'), 'url' =>['/site/language', 'language' => 'en-US']],
                     ['label' => Yii::t('app','German'), 'url' =>['/site/language', 'language' => 'de']],
               ],
         
        ],


   
     ]
    ]);
NavBar::end();

?>

那么在SiteController.php中定义操作:

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、付费专栏及课程。

余额充值