ビューのプラグインマネージャーを使用してトランスレーターヘルパーにアクセスしないでください。すでにここで説明したように、翻訳者をつかんでください。
その投稿のコピー/貼り付け:
翻訳はを介して行われTranslator
ます。トランスレータはオブジェクトであり、たとえばビューヘルパーに挿入されるため、そのビューヘルパーを呼び出すと、トランスレータを使用して文字列が変換されます。この回答では、スケルトンアプリケーションとまったく同じようにトランスレータを構成したと仮定します。
最良の方法は、ファクトリを使用して、これを依存関係としてコントローラに注入することです。コントローラの設定:
'controllers' => array(
'factories' => array(
'my-controller' => function($sm) {
$translator = $sm->getServiceLocator()->get('translator');
$controller = new MyModule\Controller\FooController($translator);
}
)
)
そしてコントローラー自体:
namespace MyModule;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\I18n\Translator\Translator;
class FooController extends AbstractActionController
{
protected $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
}
別の方法は、アクションでサービスマネージャーから翻訳者を引き抜くことですが、これは柔軟性が低く、テスト可能性が低く、保守が困難です。
public function fooAction()
{
$translator = $this->getServiceManager()->get('translator');
}
どちらの場合も$translator->translate('foo bar baz')
、文字列の翻訳に使用できます。