我在Zend2框架中使用翻译模块,或者更好地说我打算使用它。目前我只使用默认语言,在模板中我使用此代码进行翻译:
<?php echo $this->translate("Text to translate") ?>
我正在使用基于数组的翻译。这时候我不想使用翻译,但是我已经准备好了所有内容以便以后添加,所以我担心性能。这将发送翻译每个发送的请求,因此我保留保存已翻译的发送的文件为空,以便找不到翻译。
这会对性能产生很大影响,是否有办法在不更改模板的情况下关闭翻译?
答案 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'
)
);
}
}