如何在yii2上缓存数据库翻译
如何在yii2上缓存数据库翻译 我尝试了以下方法,但没有成功如何在yii2上缓存数据库翻译,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,如何在yii2上缓存数据库翻译 我尝试了以下方法,但没有成功 'i18n' => [ 'class' => Zelenin\yii\modules\I18n\components\I18N::className(), 'languages' => ['en', 'ar', 'fr'], 'sourceMessageTable' => 'source_message', 'mes
'i18n' => [
'class' => Zelenin\yii\modules\I18n\components\I18N::className(),
'languages' => ['en', 'ar', 'fr'],
'sourceMessageTable' => 'source_message',
'messageTable' => 'message',
'cache' => 'cache'
],
Yii表示,只有当属性cacheDuration
不为零时,属性cache
才有意义。我建议你设置这个值,所以
'i18n' => [
'class' => Zelenin\yii\modules\I18n\components\I18N::className(),
'languages' => ['en', 'ar', 'fr'],
'sourceMessageTable' => 'source_message',
'messageTable' => 'message',
'cache' => 'cache',
'cacheDuration' => 3600
],
问题出在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
消息将从调试列表中消失。我认为您应该明确提到它使用的扩展和链接,即使它可以从代码中识别出来。更好的方法是不要修改zelenin组件。您可以将yii config(common或frontend)i18n部分更改为:'i18n'=>['class'=>Zelenin\yii\modules\i18n\components\i18n::className(),'translations'=>['*'=>[类似于我的答案中的代码]]