您的想法
第1步 web.php
'language' => 'de', when i change 'language' => 'hu'
第二步 我创建了-foldert消息,并在messages文件夹中添加了三个文件夹(en,fr,de)并创建了三个文件(每个包含一个)-app.php
<a href="<?php echo Url::to(['']); ?>">German</a><br>
<a href="<?php echo Url::to(['']); ?>">Hungarian</a>
适用于翻译
第3步 但因为我是初学者,我不知道下一步是什么。 我创建了两个按钮,但我无法编写控制器。
查看/ index.php的
cygstart bash "/home/FirstName LastName/bin/script.sh"
我的问题是如何切换语言的按钮,需要创建一个控制器,或者没有它的工作,这是怎么回事?
第4步?
谢谢
答案 0 :(得分:1)
在控制器中创建一个设置语言的操作,例如SiteController,即
public function actionSetLang($lang)
{
switch ($lang) {
case "en":
\Yii::$app->language = "en";
break;
case "de":
\Yii::$app->language = "de";
break;
case "hu":
\Yii::$app->language = "hu";
break;
default:
\Yii::$app->language = "en";
}
$this->goBack();
}
然后在您看来,您可以设置按钮,即
<a href="<?php echo Url::to(['site/setLang', 'lang' => 'hu']); ?>">Hungarian</a>
<a href="<?php echo Url::to(['site/setLang', 'lang' => 'de']); ?>">German</a>
以上是一种非常简单的方法。理想情况下,您希望使用cookie在浏览器中存储用户的首选语言,因此用户无需在每次访问页面时更改语言。 Cookie可以在setLang操作中实现。我将跳过cookie实现,因为它们超出了这个问题的范围。
答案 1 :(得分:0)
您可以使用它来设置语言:
Yii::$app->language = 'ru_RU';
在您的控制器中使用此功能:
public function init()
{
//set here your language
parent::init();
}
它将适用于该控制器的所有功能。
编辑:
第一个函数设置应用程序其余部分的语言。当您调用该函数时,如果标签以该语言存在,则Yii::t()
标签的其余部分将使用该语言。 de init是一个在控制器中的操作之前始终调用的函数,每个控制器都有该函数。因此,如果您在那里设置语言,则该函数的其余部分将使用该语言