【问题标题】:translation view for Yii app not found找不到 Yii 应用的翻译视图
【发布时间】:2016-08-26 10:27:08
【问题描述】:

我设置了一个 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 ?? 有什么我忘记了吗?

谢谢。

【问题讨论】:

    标签: php yii view internationalization yii2


    【解决方案1】:

    由于您的配置中没有设置sourceLanguage,我假设您没有更改它并且您的应用程序的源语言是en-US(默认语言)。

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

    请参阅documentation 了解此内容:

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

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

    【讨论】:

    • 但我设置了:'forceTranslation' => true,。而且,如果我将 languagesourceLanguage 设置为 'de-DE' ,也会发生同样的错误。顺便说一句:使用 phpMessages-Feature 和相同的配置设置翻译部分文本效果很好。
    • forceTranslation 仅用于消息,languagesourceLanguage 都设置为 de-DE 这是相同的情况源 = 目标
    • @Bizley 是对的。您为特定字典设置forceTranslation = true,但视图渲染器不依赖于任何一个。查看FileHelper::localize()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多