在symfony 2.3中,service.yml中的这一行是为了找到翻译者
在service.yml
arguments: [@translator,....
在serviceFunctions.php
中 public function __construct(Translator $translator,...) {
$this->translator = $translator;
现在我收到了错误:
必须是Symfony \ Component \ Translation \ Translator的一个实例, Symfony \ Component \ Translation \ DataCollectorTranslator的实例 给定
如何在生产模式下使用2.7 in dev中的服务?
答案 0 :(得分:17)
尝试执行以下步骤:
类别:
use Symfony\Component\Translation\TranslatorInterface;
public function __construct(TranslatorInterface $translator) {
$this->translator = $translator;
}
public function yourFunction(){
$this->translator->trans('key', array(), 'yourDomain');
}
服务:
yourService:
class: yourClass
arguments: [@translator]
tags:
- { name : kernel.event_listener, event: kernel.request, method: yourFunction }
我在我的代码和它的工作中使用它;)
答案 1 :(得分:5)
尝试使用界面而不是实际的翻译类。通过将接口用作类型提示,只要它适合接口,就可以使用任何东西,例如,您可以使用生产中的常规调试转换器传入调试转换器,而无需更改代码。
use Symfony\Component\Translation\TranslatorInterface;
...
public function __construct(TranslatorInterface $translator)
{
$this->translator = $translator;
}