Yii 2多语言网站

时间:2015-01-13 06:13:50

标签: widget multilingual yii2

我正在尝试在Yii2

中获取多语言小部件like this

我审核了this

但我陷入了构建选择器小部件的最后一部分。任何人都可以在Yii2中逐步列出过程吗?

下面是我的语言选择器代码,它不返回任何内容并打破现在的布局

<?php //languageselector.php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;

?>

<div id="language-select">
<?php 
if(sizeof($languages) < 4) {
    // Render options as links
    $lastElement = end($languages);
    foreach($languages as $key=>$lang) {
        if($key != $currentLang) {
           echo  $owners->createMultilanguageReturnUrl($key);
            echo Html::a(
                 $lang,
                 $owners->createMultilanguageReturnUrl($key));
        } else echo '<b>'.$lang.'</b>';
        if($lang != $lastElement) echo ' | ';
    }
}
else {
    // Render options as dropDownList
    echo Html::form();
    foreach($languages as $key=>$lang) {
        echo Html::hiddenField(
            $key, 
            $this->createMultilanguageReturnUrl($key));
    }
    echo Html::dropDownList('language', $currentLang, $languages,
        array(
            'submit'=>'',
        )
    ); 
    echo Html::endForm();
    }
    ?>
    </div>

1 个答案:

答案 0 :(得分:1)

经过大量试验后,我找到了解决问题的方法。 有关那些希望在yii2

中构建多语言小部件的人,请参阅下文
<?php
namespace app\components\widgets;
use Yii;
use yii\helpers\Html;
use yii\base\Widget;
use app\components\views;

class LanguageSelectorPortlet extends Widget
{
public function init(){
    $this->renderContent();
}

public function renderContent()
{
    $currentLang = Yii::$app->language;

    $languages = Yii::$app->params['languages'];
    echo $this->render('languageSelector', array('currentLang' => $currentLang,    'languages'=>$languages));
}
}

,其视图文件如下

   <?php
   use yii\helpers\Html;
   use yii\bootstrap\ActiveForm;

  ?>
<div id="language-select">
<?php 

    // Render options as links
    $lastElement = end($languages);
    foreach($languages as $key=>$lang) {
        if($key != $currentLang) {
            echo Html::a($lang,Yii::$app->getUrlManager()->createmultiUrl($key));

        } else echo '<b>'.$lang.'</b>';
        if($lang != $lastElement) echo ' | ';
    }


 ?>
</div>

希望能帮助那些在YII2中与多语言小部件挣扎的人

相关问题