找不到Yii app的翻译视图

时间:2016-08-26 10:27:08

标签: php yii view internationalization yii2

我设置了一个i18n页面,我使用yii\i18n\PhpMessageSource使用以下配置部分翻译消息: (配置/ web.php)

$config = [
 'id' => 'basic',
 'basePath' => dirname(__DIR__),
 'bootstrap' => ['debug'],
 'language' => 'de-DE',
 'components' => [
     'i18n' => [
            'translations' => [
                'app*' => [
                   'class' => 'yii\i18n\PhpMessageSource',
                    'basePath' => '@app/messages',
                    'fileMap' => [
                        'app' => 'app.php',
                    ],
                    'forceTranslation' => true,
                ],
            ],

]]

...顺便说一下:这很好用。 对于一种静态内容 - 就像一个印记 - ,我喜欢使用完整的翻译视图。 所以我在views - 文件夹中添加了一些子目录,其中包含视图洞察力:

@app/views/myController/de-DE/myview.php
@app/views/myController/en-US/myview.php

所以我的行动做了以下事情:

public function actionImpressum() {
    \Yii::$app->language = 'en-US';
   return $this->render('myview');
}

...导致参数无效

yii\base\InvalidParamException: The view file does not 
exist: /path/to/my/app/views/myCtrl/myview.php

此错误有效,因为此路径中没有视图。但是render()方法不应该使用转换视图的路径,例如: /path/to/my/app/views/myCtrl/en-US/myview.php ?? 我忘记了什么吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

由于您的配置中未设置sourceLanguage,因此我假设您尚未对其进行更改,并且您应用的源语言为en-US(默认值为1)。

当源语言与目标语言视图相同时已翻译。

请参阅documentation

  

注意:如果目标语言与源语言相同,则无论是否存在已翻译的视图,都将呈现原始视图。

因此,对于en-US,它会查找/path/to/my/app/views/myCtrl/myview.php个文件。