Ich habe ein Problem mit meiner erweiterten Vorlage, wenn ich versuche, Seite mit Internationalisierung zu ändern. Ich versuche es zu erklären. Um die Internationalisierung auf meiner Website zu verwenden Ich habe diese Schritte durchführen:Yii2 - Sprache ändern
In params.php, ich habe diese hinzugefügt:
<?php
return [
'adminEmail' => '[email protected]',
'languages' => [
'en' => 'English',
'it' => 'Italian',
],
];
Ich habe dies hinzugefügt in meinem Frontend \ Ansichten \ Layouts \ main.php zu Rufen Sie auf meiner Website die oben eingefügten Sprachen an:
<?php
foreach(Yii::$app->params['languages'] as $key => $language){
echo '<span class="language" id ="'.$key.'">'.$language.' | </span>';
}
?>
nachdem ich eine neue Datei mit dem Namen main.js erstellt habe. Damit yii2 die Datei main.js sehen kann, habe ich diese in der AppAsset.php hinzugefügt (ist das korrekt?). In dieser Datei das ich einfügen:
$(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'));
});
});
danach in dem sitecontroller.php ich hinzugefügt habe dies:
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);
}
}
nach in config \ main.php Ich habe dies in Komponenten hinzugefügt:
'components' => [
'i18n' => [
'translations' => [
'app' => [
'class' => 'yii\i18n\PhpMessageSource',
//'basepath' => @app/messages,
'sourceLanguage' => 'it',
'fileMap' => [
'app' => 'app.php',
'app/error' => 'error.php',
],
],
],
],
schließlich habe ich auf der root einen Ordner namens Nachrichten \ it und Nachrichten \ en und in zwei Dateien (eine pro Ordner) namens app.php erstellen Ich habe diesen Text einfügen:
<?php
return [
'Benvenuto' => 'Welcome'
];
das ist alles ... aber nach meiner Homepage (richtig) laden, wenn ich auf einer der Sprachen klicken (Italienisch oder Englisch) Ich nehme die folgenden Meldungen:?
jquery.js ver = 1,11 0,3: 4 POST http://localhost/mdf/frontend/web/index.php?r=site/language 400 (Bad Request)
Und wenn ich versuche, direkt diese uRL einfügen, ich erhalte nur eine leere Seite: http://localhost/mdf/frontend/web/index.php?r=site/language
Danke ... ich das leere Seite Problem gelöst ... natürlich habe ich immer das andere Problem über Fehler 400 Bad Request ... – Carlo