我很难知道使用**\Yii::$app->language = 'pt';**
我在main.php
视图中尝试过,但只有菜单才能进行翻译。在tutorial-i18N中说:
您可以在运行时将应用程序语言设置为该语言 用户选择了。这必须在任何输出之前的某个点完成 生成,以便它正确影响所有输出。为此 只需将应用程序属性更改为所需的值
我的目的是将所需的语言存储在用户个人资料中的LANGUAGE
字段中(以及FULL_NAME
等)。
在代码中,我需要知道正确的位置以及如何使用它。
编辑
@TimothéePlanchais,这种方式有效:
class SiteController extends Controller
{
public function init()
{
parent::init();
if(!Yii::$app->user->isGuest) {
Yii::$app->language = Yii::$app->user->identity->profile->language;
}
}
但仅适用于SiteController
答案 0 :(得分:0)
要设置应用程序语言,请编辑文件config / web.php:
$config = [
'id' => 'myapp',
'name' => My App',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'language' => 'pt',//HERE
...
]
您可以在自定义Controller类中执行所有操作,该类应由所有控制器进行扩展。在init()
函数中:
namespace app\components;
class Controller extends yii\web\Controller
{
public function init()
{
parent::init();
if(!Yii::$app->user->isGuest) {
Yii::$app->user->getIdentity()->language = Yii::$app->language;
}
}
}
SiteController例如:
class SiteController extends app\components\Controller
{
...
}