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 に答える