2016-11-08 251 views
1

當我嘗試使用國際化更改頁面時,我的高級模板出現問題。 我試着解釋一下。要使用國際化在我的網站我有遵循這個步驟:Yii2 - 更改語言

在params.php,我已經加入這個:

<?php 
    return [ 
    'adminEmail' => '[email protected]', 
    'languages' => [ 
    'en' => 'English', 
    'it' => 'Italian', 
    ], 
    ]; 

我在前臺\意見\佈局添加該\ main.php到請撥打我的網站上面的語言插入:

<?php 
    foreach(Yii::$app->params['languages'] as $key => $language){ 
    echo '<span class="language" id ="'.$key.'">'.$language.' | </span>'; 
    } 
?> 

我創建了一個名爲main.js的新文件後。爲了允許yii2查看main.js文件,我在AppAsset.php中添加了這個(是否正確?)。在這個文件我插入這樣的:之後,在sitecontroller.php我加入

$(function(){ 
    $(document).on('click','.language', function(){ 
    var lang = $(this).attr('id'); 
    $.post('index.php?r=site/language', {'lang':lang},function(data){ 
    location.reload(); 
    }); 
}); 
$(document).on('click','.fc-day', function(){ 
    var date = $(this).attr('data-date');  
     $get('index.php?r=event/create',{'date':date},function(data){ 
      $('#modal').modal(show) 
      .find('#modalContent') 
      .html(data);    
     }); 
}); 

$('#modalButton').click(function(){ 
     $('#modal').modal(show) 
     .find('#modalContent') 
     .load($(this).attr('value')); 
}); 
}); 

這樣的:

public function actionLanguage() 
{ 
    if(isset($_POST['lang'])){ 
     Yii::$app->language = $_POST['lang']; 
     $cookie = new Yii\web\cookie([ 
     'name'=>'lang', 
     'value'=>$_POST['lang'] 
    ]); 
    Yii::$app->getResponse()->getCookies()->add($cookie); 
    } 
} 

後配置\ main.php我在成分中添加此

'components' => [ 
    'i18n' => [ 
     'translations' => [ 
      'app' => [ 
       'class' => 'yii\i18n\PhpMessageSource', 
       //'basepath' => @app/messages, 
       'sourceLanguage' => 'it', 
       'fileMap' => [ 
        'app' => 'app.php', 
        'app/error' => 'error.php', 
       ], 
      ], 
     ], 
    ], 

最後我在根上創建了一個名爲messages \ it和messages \ en的文件夾,並在兩個文件(每個文件夾一個)內部創建了一個名爲app.php的文件夾:

<?php 
    return [ 
     'Benvenuto' => 'Welcome' 
    ]; 

這一切......但是當我在語言之一單擊加載我的主頁(正確)後(意大利語或英語),我看到以下消息:

的jquery.js版本= 1.11 0.3:4 POST http://localhost/mdf/frontend/web/index.php?r=site/language 400(錯誤請求)

,如果我嘗試直接將這個網址貼,我只能得到一個空白頁: http://localhost/mdf/frontend/web/index.php?r=site/language

回答

1

這只是你的問題

部分緩解3210

使用瀏覽器調用時的空白頁面可能與您在此情況下不顯示不同的事實有關。

嘗試管理阿賈克斯這樣

public function actionLanguage() 
{ 
    if (Yii::$app->request->isAjax) { 
     $data = Yii::$app->request->post(); 
     if(isset($data['lang'])) { 
      Yii::$app->language = $data['lang']; 
      $cookie = new Yii\web\cookie([ 
       'name'=>'lang', 
       'value'=>$_POST['lang'] 
      ]); 
      Yii::$app->getResponse()->getCookies()->add($cookie); 
      return; 
     } 
    } else { 
     return $this->render('index', []); 
    } 
} 
+0

謝謝......我解決了這個空白頁的問題......當然我也經常約400錯誤的要求的其他問題... – Carlo