如何获得ZF3控制器插件内的翻译器

问题描述:

我想创建一个插件来在控制器上使用zend-i18n/translate。在zf2上,我有一个控制器插件可以为我做到这一点,但是在zf3上我无法实现这个功能。我如何在控制器中使用zend-i18n或者通过控制器插件使用zf3?如何获得ZF3控制器插件内的翻译器

========== 我只是找到了我需要在这里ZF DOC:https://docs.zendframework.com/zend-mvc-i18n/services/#mvctranslator-and-translatorfactory

如果你已经配置了翻译为工厂对你module.config.php,你可以注入你的控制器插件。

+0

你看这个http://*.com/questions/38293988/zf3-zend-mvc-skeleton-internationalization-not-working – hkulekci

+0

感谢您的答复,但翻译视图我已经配置和工作正常,我需要在控制器上翻译。 – rafaelphp

您几乎可以像the answer that @hkulekci referred to in his comment一样进行操作。

'service_manager' => [ 
    'factories' => [ 
     \Zend\I18n\Translator\TranslatorInterface::class => \Zend\I18n\Translator\TranslatorServiceFactory::class, 
    ] 
] 

'controller_plugins' => [ 
    'invokables' => [ 
     'translate' => \Zend\I18n\View\Helper\Translate::class 
    ] 
] 

之后,你可以得到翻译插件就像在你的控制器操作方法是这样的:

public someAction(){ 
    $translator = $this->translate; 
} 

检查Zend Framework documentationthis Zend Framework blog为控制器的更多细节插件管理器。

+0

嗨,我创建了一个名为translate的插件,并注入到serviceManager中,然后在插件内部获得全局MvcTranslator,并且工作正常。但是谢谢。一个问题是,使用View \ Helper \ Translate :: class作为插件的配置正确吗? – rafaelphp