缓存翻译

时间:2013-09-05 19:42:40

标签: zend-framework2 zend-translate

我认为我遇到了一个思维障碍,我无法以自己的方式解决这个问题。

在进一步讨论之前,我的目标之一(如果可能)是在'config_cache_enabled' => true文件中设置application.config.php,以便我的配置全部合并在一起,同时能够缓存翻译。< / p>

在我module.config.php我有以下内容:

'translator'  => array(
    'locale'                    => 'en',
    'translation_file_patterns' => array(
        array(
            'type'        => 'gettext',
            'base_dir'    => __DIR__ . '/../language',
            'pattern'     => '%s.mo',
            'text_domain' => 'mytextdomain'
        )
    )
)

翻译按预期工作。现在我想添加缓存支持,所以我将前面的示例更改为:

'translator'  => array(
    'locale'                    => 'en',
    'translation_file_patterns' => array(
        array(
            'type'        => 'gettext',
            'base_dir'    => __DIR__ . '/../language',
            'pattern'     => '%s.mo',
            'text_domain' => 'mytextdomain'
        )
    ),
    'cache' => \Zend\Cache\StorageFactory::factory(array(
        'adapter' => array(
            'name'    => 'Filesystem',
            'options' => array(
                'cache_dir' => __DIR__ . '/../../../data/cache',
                'ttl'       => '3600'
            )
        ),
        'plugins' => array(
            array(
                'name'    => 'serializer',
                'options' => array()
            ),
            'exception_handler' => array(
                'throw_exceptions' => true
            )
        )
    ))
)

由于closure(),这会导致循环引用问题。如果我设置'config_cache_enabled' => false,这将有效,但这不是我追求的目标。

甚至可以做我正在尝试的事情吗?如果是这样,您可以分享的任何示例都会非常有用。

1 个答案:

答案 0 :(得分:3)

您应该只在配置文件(将被缓存的文件)中写入原始数据。没有关闭,没有什么不能安全地序列化。

这应该做同样的事情:

'translator'  => array(
    ...
    'cache' => array(
        'adapter' => array(
            'name'    => 'Filesystem',
            'options' => array(
                'cache_dir' => __DIR__ . '/../../../data/cache',
                'ttl'       => '3600'
            )
        ),
        'plugins' => array(
            array(
                'name'    => 'serializer',
                'options' => array()
            ),
            'exception_handler' => array(
                'throw_exceptions' => true
            )
        )
    )
)