如何使用Yii :: $ app->语言

时间:2015-02-26 04:42:07

标签: internationalization yii2

我很难知道使用**\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

1 个答案:

答案 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
{
  ...
}