0

如何在 yii2 上缓存数据库翻译

我尝试了以下但没有奏效

'i18n' => [
            'class' => Zelenin\yii\modules\I18n\components\I18N::className(),
            'languages' => ['en', 'ar', 'fr'],
            'sourceMessageTable' => 'source_message',
            'messageTable' => 'message',
            'cache' => 'cache'

        ],
4

2 回答 2

1

问题出在 Zelenin i18n 模块中。如果您查看 Module.php 文件,您可以看到:

        $this->translations['*'] = [
            'class' => DbMessageSource::className(),
            'sourceMessageTable' => $this->sourceMessageTable,
            'messageTable' => $this->messageTable,
            'on missingTranslation' => $this->missingTranslationHandler
        ];

init()方法。此代码设置 DbMessageSource 选项,并且没有任何关于缓存的选项。模块也没有任何缓存选项。

如果将此代码更改为:

        $this->translations['*'] = [
            'class' => DbMessageSource::className(),
            'sourceMessageTable' => $this->sourceMessageTable,
            'messageTable' => $this->messageTable,
            'enableCaching' => true,
            'cachingDuration' => 3600,
            'on missingTranslation' => $this->missingTranslationHandler
        ];

缓存将起作用。一些SELECT消息将从调试列表中消失。

于 2015-04-30T09:26:20.273 回答
-1

i18n db 消息的 Yii文档说该属性仅在属性不为零cache时才有意义。cacheDuration我建议你设置这个值,所以;

'i18n' => [
        'class' => Zelenin\yii\modules\I18n\components\I18N::className(),
        'languages' => ['en', 'ar', 'fr'],
        'sourceMessageTable' => 'source_message',
        'messageTable' => 'message',
        'cache' => 'cache',
        'cacheDuration' => 3600

    ],
于 2015-03-24T04:45:37.093 回答