Symfony:LoggingTranslator 与翻译器
Symfony: LoggingTranslator vs Translator
我想将我的翻译字符串注入服务,所以我在服务定义中使用了它:
arguments: [@doctrine.orm.entity_manager, @translator]
我在构造函数中使用了这个:
public function __construct(\Doctrine\ORM\EntityManager $entityManager, \Symfony\Component\Translation\Translator $translator)
但是我得到这个错误:
.... __construct() must be an instance of Symfony\Component\Translation\Translator, instance of Symfony\Component\Translation\LoggingTranslator given...
两者有什么区别?
根据news announcement,从2.6版本开始,翻译器组件被定义为类似translator.default
的服务。
所以更改您的服务定义:
arguments: [@doctrine.orm.entity_manager, @translator]
与
arguments: [@doctrine.orm.entity_manager, @translator.default]
Symfony 2.6 引入了缺失的翻译记录,为此 "translator" 服务别名被某种真正翻译器的代理所取代 class。
正如在另一个(目前已接受的)答案中所说,真正的翻译器 class 现在在 "translator.default" 服务上。但是使用此服务而不是 "translator" 将禁用此新的 Symfony 功能,因此您可能希望避免这种情况。
要解决您的问题并仍然可以使用新功能,请更改构造函数的代码以接受 TranslatorInterface 的任何实现:
public function __construct(\Doctrine\ORM\EntityManager $entityManager, \Symfony\Component\Translation\TranslatorInterface $translator)
我想将我的翻译字符串注入服务,所以我在服务定义中使用了它:
arguments: [@doctrine.orm.entity_manager, @translator]
我在构造函数中使用了这个:
public function __construct(\Doctrine\ORM\EntityManager $entityManager, \Symfony\Component\Translation\Translator $translator)
但是我得到这个错误:
.... __construct() must be an instance of Symfony\Component\Translation\Translator, instance of Symfony\Component\Translation\LoggingTranslator given...
两者有什么区别?
根据news announcement,从2.6版本开始,翻译器组件被定义为类似translator.default
的服务。
所以更改您的服务定义:
arguments: [@doctrine.orm.entity_manager, @translator]
与
arguments: [@doctrine.orm.entity_manager, @translator.default]
Symfony 2.6 引入了缺失的翻译记录,为此 "translator" 服务别名被某种真正翻译器的代理所取代 class。
正如在另一个(目前已接受的)答案中所说,真正的翻译器 class 现在在 "translator.default" 服务上。但是使用此服务而不是 "translator" 将禁用此新的 Symfony 功能,因此您可能希望避免这种情况。
要解决您的问题并仍然可以使用新功能,请更改构造函数的代码以接受 TranslatorInterface 的任何实现:
public function __construct(\Doctrine\ORM\EntityManager $entityManager, \Symfony\Component\Translation\TranslatorInterface $translator)