如何在zend框架2中的控制器中使用translate helper

San*_*nju 4 zend-translate zend-framework2

有没有办法在控制器中翻译字符串而不是视图?

现在,在我的控制器中,如果我传递如下字符串:

public function indexAction() {
    return array('message' => 'example message');
}
Run Code Online (Sandbox Code Playgroud)

它将在index.phtml中翻译

<?php print $this->translate($message);?>
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是poeditor无法从控制器文件中找到字符串

猜猜如果我可以使用类似的东西会很酷:

public function indexAction() {
    return array('message' => $view->translate('example message'));
}
Run Code Online (Sandbox Code Playgroud)

在控制器中

在此先感谢您的帮助

web*_*der 23

要在控制器中使用视图助手,可以使用"getServiceLocator"

$helper = $this->getServiceLocator()->get('ViewHelperManager')->get('helperName');
Run Code Online (Sandbox Code Playgroud)

您可以使用php getText函数___('我的自定义消息')并在poedit中添加"_"作为sources关键字(在目录属性中),因此poedit将从控制器中过滤字符串.例如:

array('message' => _('my custom message'));
Run Code Online (Sandbox Code Playgroud)

根据您的代码,您可以像这样直接使用帮助程序

$translate = $this->getServiceLocator()->get('ViewHelperManager')->get('translate');

array('message' => $translate('my custom message'));
Run Code Online (Sandbox Code Playgroud)