Zend2翻译性能并将其关闭

时间:2013-10-24 13:53:42

标签: php zend-framework zend-framework2

我在Zend2框架中使用翻译模块,或者更好地说我打算使用它。目前我只使用默认语言,在模板中我使用此代码进行翻译:

<?php echo $this->translate("Text to translate") ?>

我正在使用基于数组的翻译。这时候我不想使用翻译,但是我已经准备好了所有内容以便以后添加,所以我担心性能。这将发送翻译每个发送的请求,因此我保留保存已翻译的发送的文件为空,以便找不到翻译。

这会对性能产生很大影响,是否有办法在不更改模板的情况下关闭翻译?

1 个答案:

答案 0 :(得分:2)

您可以简单地用自己的助手覆盖ZF2翻译视图助手,让它只返回翻译键,跳过所有翻译逻辑。每当您需要使应用程序多语言时,您只需删除自定义帮助程序并再次使用ZF2内置帮助程序。这样您就不需要更改任何视图/模板。

你的助手应该是这样的:

namespace MyNamespace\I18n\View\Helper;

use Zend\I18n\Exception;

class Translate extends AbstractTranslatorHelper
{
    public function __invoke($message, $textDomain = null, $locale = null)
    {
        return $message;
    }
}

通过在module.php中实现getViewHelperConfig方法,将自定义助手注册到viewHelper PluginManager。

class Module
{
    public function getViewHelperConfig()
    {
        return array(
            'invokables' => array(
                'translate' => 'MyNamespace\I18n\View\Helper\Translate'
            )
        );
    }
}